1. 程式人生 > >maven增加原始檔目錄時報錯解決辦法(已試有效)

maven增加原始檔目錄時報錯解決辦法(已試有效)

報錯如下:
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (execution: default-testCompile, phase: test-compile)

究其原因是因為基於maven的專案多使用各種maven plugin來完成開發中的一些工作,例如編譯程式碼,打包,部署等,每個plugin包含許多的goal,用來做特定的事情。例如 clean compile test package deploy等。除了這些比較常見的goal之外,專案中還可以使用大量的第三方的plugin,甚至自己動手開發的plugin。隨之而來的問題是,在eclipse中編輯maven專案的時候,eclipse並不知道這些特殊用途的goal要做什麼。所以m2eclipse這個整合maven到eclipse的plugin就提供了開發extra的能力,eclipse利用這些extra來完成本來在maven plugin要乾的活。如果eclipse沒有辦法知道某個goal要幹什麼,那麼就會看到這個錯誤資訊。

解決辦法之一:

StackOverFlow中一個帖子說在pom.xml中在報錯的plugin的外面再包上一層<pluginManagement></pluginManagement> 如下:

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>

解決辦法二: pluginManagement的作用是作為公用的外掛配置項,給子專案共用的。如果這個專案沒有子專案,這樣做就不合理了或者有時候父專案pom不能被修改,也就沒辦法新增pluginManagement。這時候就可以採用第二種方案:在Eclipse中Window->Perferences->Maven->Lifecycle Mapping選項卡中點選Open workspace lifecycle mappings metadata,在打卡的xml中新增如下內容並儲存:

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

將groupId和artifactId及versionRange根據具體的外掛進行修改,儲存之後記得點選 ”Reload workspace lifecycle mappings metadata“按鈕