2012-12-12 140 views
14

我想使用Maven執行一個只需要源代碼的插件,但我不想Maven編譯任何東西(主要是因爲該項目不能編譯)。Maven跳過編譯

我該如何告訴Maven跳過編譯步驟並啓動它的插件,然後將生成的資源打包在一個漂亮的JAR中? (最後一步的過程已經知道我了。)

附加信息:

所以我們嘗試了很多東西,現在,如:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <excludes> 
      <exclude>**/*</exclude> 
     </excludes> 
     <source>1.7</source> 
      <target>1.7</target> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
     </execution> 
    </executions> 
</plugin> 

雖然當我們做a mvn package我們得到這個:

[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ project --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling ALOTOF source files to /home/myname/dir/dir/project/target/classes 

消息編輯ofc。

回答

-1

我會定義一個單獨的pom只是爲了構建單獨的工件。

在那個pom中,你只能使用你的資源生成插件和包裝的插件。

那麼你不必擔心它做得太多。

4

Maven功能部分是在插件中組織的,它包含目標。這些目標可以在不影響生命週期的一部分的情況下執行。例如,對於爲JAR-插件的jar-目標,你會調用:

mvn jar:jar 

如果您瀏覽the list of available plugins你會propably找到你要找的functionalyity。如果有必要,您甚至可以定義一個「程序集」來選擇要歸檔到檔案中的文件。

13
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>default-compile</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
     <skipMain>true</skipMain> <--Skip 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

設置此爲「真」來的主要來源旁路編譯。它的用途是 不推薦,但有時很方便。用戶屬性是: maven.main.skip。

mvn package -Dmaven.main.skip

2

爲了防止Maven的編譯默認情況下,首先要確保Maven的編譯器插件的配置有useIncrementalCompilation =假

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.3</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
     <useIncrementalCompilation>false</useIncrementalCompilation> 
    </configuration> 
</plugin> 

此外,如果你的Maven Profile使用maven-clean-plugin,那麼默認情況下它會發現並刪除目錄configur編在project.build.directoryproject.build.outputDirectoryproject.build.testOutputDirectory,和project.reporting.outputDirectory

要禁用這些默認的清理,加入Maven的清理插件配置:excludeDefaultDirectories =真

<excludeDefaultDirectories>true</excludeDefaultDirectories>