2012-12-12 82 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>