maven各种报错解决方案

1、问题一

pom文件报错如下:

org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

1.1、问题产生原因

插件不是最新的

1.2、解决办法一:

在pom增加如下配置:

<properties>
        <maven-jar-plugin.version>2.6</maven-jar-plugin.version>
    </properties>

1.3、解决办法二(一次性解决):

help->install new software,add

name为 MavenArchiver

Location中输入https://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/

点击 next 前,将 eclipse Install 窗口右下角的 Contact all update sites during install to find required software 选项取消掉

然后一直next

2、问题二

pom文件报错如下:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-source (execution: add-source, phase: initialize)

2.1、类似问题产生原因

基于maven的项目,使用各种maven plugin来完成开发中的各种工作,例如编译代码,打包,部署等等…

每个plugin包含许多的goal,用来做特定的事情。典型的基于java的maven项目就有 clean compile test package

deploy等goal要执行。除了这些比较常见的goal之外,项目中还可以使用大量的第三方的plugin,甚至自己动手开发的plugin。

随之而来的问题是,在eclipse中编辑maven项目的时候,eclipse并不知道这些goal要做什么,通用的goal还好说,特殊用途的goal就没有办法了。所以m2eclipse这个集成maven到eclipse的plugin就提供了开发extra的能力,eclipse利用这些extra来完成本来在maven plugin要干的活。

如果eclipse没有办法知道某个goal要干什么,那么通常就会看到如下的错误信息:

  1.  Plugin execution not covered by lifecycle configuration:

  2.  org.codehaus.mojo:build-helper-maven-plugin:1.8:add-source (execution: add-source, phase: initialize)

2.2、解决方法一

在pom文件的build标签下新增如下配置

<pluginManagement>
    <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>
                                    org.codehaus.mojo
                                </groupId>
                                <artifactId>
                                    build-helper-maven-plugin
                                </artifactId>
                                <versionRange>
                                    [1.8,)
                                </versionRange>
                                <goals>
                                    <goal>add-source</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <ignore></ignore>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

2.3、解决办法二

window->preference->maven->lifecycle mappings中,打开lifecycle-mapping-metadata.xml

根据报错信息,在该xml填写内容

如报错信息为:Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-source (execution: add-source, phase: initialize)

则应在该xml文件中添加如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <goals>
                    <goal>add-source</goal>
                </goals>
                <versionRange>[1.8,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution> 
    </pluginExecutions>
</lifecycleMappingMetadata>

3、问题三

pom文件报错,很多依赖无法引入

图1:

图2: 

图3: 

问题描述:pom文件报错好多Missing artifact,但是maven dependencies里明明已经引入进来了,就拿cglib为例,groupId和version明明都是对应得没有错

问题在于version文件夹下有个_remote.repositories文件

>nexus说明这个依赖是从私服中下载下来的。而此时我是连不上私服的(我是通过vpn连接公司maven私服得,网速极慢

查看一个能正常显示的依赖,发现_remote.repositories

这个是从远程仓库下载下来的。

于是有个想法:将控制台problem里显示的下载失败的依赖,找到对应的_remote.repositories文件,把nexus=改成central=我的做法是直接删除

最后发现果然成功了

发布了102 篇原创文章 · 获赞 68 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/xl_1803/article/details/104227124