37

我想使用 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>

虽然当我们做 amvn 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。

4

5 回答 5

39
<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

于 2015-03-12T05:47:35.140 回答
10

Maven 功能部分组织在包含目标的插件中。这些目标可以在不成为生命周期的一部分的情况下执行。例如,对于 jar-plugin 的 jar-goal,您将调用:

mvn jar:jar

如果您浏览可用插件列表,您可能会找到您正在寻找的功能。如果有必要,您甚至可以定义一个“程序集”来选择要捆绑到存档中的文件。

于 2012-12-12T10:22:47.350 回答
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.directoryproject.build.outputDirectoryproject.build.testOutputDirectoryproject.reporting.outputDirectory中配置的目录。

要禁用这些默认清理,请添加到 maven-clean-plugin 配置:excludeDefaultDirectories = true

<excludeDefaultDirectories>true</excludeDefaultDirectories>
于 2015-11-09T14:13:19.330 回答
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>
于 2021-06-14T09:50:33.730 回答
-3

我会定义一个单独的 pom 来构建单独的工件。

在那个 pom 中,你只使用你的资源生成插件和打包插件。

那么你就不必担心它做的太多了。

于 2012-12-12T09:53:03.377 回答