【问题标题】:Maven skip compileMaven跳过编译
【发布时间】:2012-11-29 23:49:56
【问题描述】:

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

消息已编辑。

【问题讨论】:

    标签: java maven compilation


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      mvn jar:jar
      

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

      【讨论】:

        【解决方案3】:
        <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

        【讨论】:

        • 这对于我有一个 POM 文件正在为项目安装 JAR 文件但不需要编译源代码的情况很有用,因为这是通过不同的工具编译和执行的。在这种情况下,它是一个 Gauge Java 测试。
        【解决方案4】:

        为了防止Maven默认编译,首先要确保ma​​ven-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 配置文件使用 ma​​ven-clean-plugin,则默认情况下它会发现并删除在 project.build.directory 中配置的目录,project.build.outputDirectoryproject.build.testOutputDirectoryproject.reporting.outputDirectory

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

        <excludeDefaultDirectories>true</excludeDefaultDirectories>
        

        【讨论】:

          【解决方案5】:

          所以我像这样使用它并且它有效。 (假)

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

          【讨论】:

          • 您应该在答案中添加它实际编译但不会失败的过程。
          • 你必须更好地描述你的问题。
          猜你喜欢
          • 1970-01-01
          • 2018-06-22
          • 2012-05-07
          • 2012-01-05
          • 2011-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多