我想使用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>
虽然当我们做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
编辑的消息。
答案 0 :(得分:20)
<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>
将此设置为“true”以绕过主要源的编译。它的用途是 不推荐,但偶尔也很方便。用户属性是: maven.main.skip。
mvn package -Dmaven.main.skip
答案 1 :(得分:6)
Maven功能部分在插件中组织,其中包含目标。这些目标可以在不属于生命周期的情况下执行。例如,对于jar-plugin的jar目标,你会调用:
mvn jar:jar
如果浏览the list of available plugins,您可能会找到所需的功能。如果有必要,你甚至可以定义一个&#34;组件&#34;选择要捆绑到存档中的文件。
答案 2 :(得分:3)
要默认阻止Maven编译,首先要确保 maven-compiler-plugin 的配置具有 useIncrementalCompilation = false :
<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配置文件使用 maven-clean-plugin ,则默认情况下它会发现并删除 project.build.directory 中配置的目录, project.build.outputDirectory , project.build.testOutputDirectory 和 project.reporting.outputDirectory 。
要禁用这些默认清理,请添加到maven-clean-plugin配置: excludeDefaultDirectories = true :
<excludeDefaultDirectories>true</excludeDefaultDirectories>
答案 3 :(得分:0)
所以我像这样使用它并且它起作用了。 (假)
<executions>
<execution>
<id>default-compile</id>
<configuration>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<failOnError>false</failOnError>
<compilerArgument>-Xlint:unchecked</compilerArgument>
<compilerArguments>
<source>${maven.compiler.target}</source>
<target>${maven.compiler.source}</target>
</compilerArguments>
</configuration>
</execution>
答案 4 :(得分:-1)
我会定义一个单独的pom,仅用于构建单独的工件。
在那个pom中,您只使用资源生成插件和打包插件。
然后你不必担心它做得太多。