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=我的做法是直接刪除

最後發現果然成功了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章