繁体   English   中英

使用Maven进行增量Java编译(就像Eclipse一样)

[英]Incremental java compile with maven (like Eclipse does)

我想使用maven来构建其中存在未解决的编译问题的项目。

主要目的是使用某种存根为包含编译错误的类打包和部署或运行​​应用程序 ,就像我了解Eclipse所做的那样(由于JDT Core )。

我在“ 使用非Javac编译器使用Eclipse编译器”中的Apache Maven文档之后配置maven java编译器插件。 我可能正在考虑设置一些参数来修改编译器/构建器,因为我正在阅读“ 帮助Eclipse-编译Java代码”,但是我不知道哪个编译器/构建器选项或这些选项的组合才有效。

到目前为止,Maven Java编译器插件的下一个配置使用eclipse编译器进行编译,并将应用程序(包括生成的.class(jvm字节码))打包为应用程序,仅适用于没有编译错误的Java类。 要获得这种行为,只需使用eclipse编译器(请参阅failOnError=false和依赖项)并设置failOnError=false

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <compilerId>eclipse</compilerId>
        <source>1.7</source>
        <target>1.7</target>
        <optimize>true</optimize>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
        <failOnError>false</failOnError>
        <compilerArguments>
            <org.eclipse.jdt.core.compiler.problem.fatalOptionalError>disabled</org.eclipse.jdt.core.compiler.problem.fatalOptionalError>
            <org.eclipse.jdt.core.compiler.problem.forbiddenReference>ignore</org.eclipse.jdt.core.compiler.problem.forbiddenReference>
        </compilerArguments>
    </configuration>

    <dependencies>
         <dependency>
              <groupId>org.codehaus.plexus</groupId>
              <artifactId>plexus-compiler-eclipse</artifactId>
              <version>2.3</version>
         </dependency>
    </dependencies>
</plugin>

使用这种配置,只要执行不使用编译错误中未包含的类(因为未生成存根),我就可以运行Java应用程序,但是在Java EE容器上,类加载将失败,因此永远无法部署该应用程序。

我对此表示感谢。

只是为了分享解决方案,那一刻,我只是用tycho-compiler-jdt替换了plexus-compiler-eclipse ,以获取欲望。

proceedOnError参数指示尽管有错误,但仍必须继续编译,转储具有问题方法或问题类型的类文件如何处理编译错误。

接下来是最终配置示例。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <compilerId>jdt</compilerId>
        <source>1.7</source>
        <target>1.7</target>
        <optimize>true</optimize>
        <failOnError>false</failOnError>
        <compilerArguments>
            <proceedOnError/>
        </compilerArguments>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-compiler-jdt</artifactId>
            <version>0.22.0</version>
        </dependency>
    </dependencies>
</plugin>

Tycho FAQ中有更多的插件配置示例。 Java开发用户指南的 使用批处理编译器 (Eclipse帮助站点)部分中描述了可能的编译器参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM