Tag: maven compiler plugin

使用maven增量java编译(就像Eclipse一样)

我想使用maven来构建存在未解决的编译问题的项目。 主要目的是为包含编译错误的类使用某种存根来打包和部署或运行​​应用程序 ,就像我理解Eclipse那样(感谢JDT Core )。 我在使用非Javac编译器的 Apache Maven文档之后配置maven java编译器插件以使用Eclipse编译器。 认为可能应该设置一些参数来修改编译器/构建器行为,我正在阅读帮助Eclipse – 编译Java代码,但我没有意识到哪个编译器/构建器选项或这些的组合起作用。 到目前为止,maven java编译器插件的下一个配置使用eclipse编译器编译并打包应用程序,包括生成的.class(jvm字节码)仅适用于没有编译错误的java类。 要获得此行为,只需要使用eclipse编译器(请参阅compilerId和依赖项)并设置failOnError=false 。 maven-compiler-plugin 3.1 eclipse 1.7 1.7 true true true false disabled ignore org.codehaus.plexus plexus-compiler-eclipse 2.3 使用这种配置,我可以运行java应用程序,只要执行不使用未包含的编译错误的类(因为没有生成存根),但在Java EE容器上,类加载将失败,因此永远不会部署应用程序。 我对此表示感谢。

“检测到必需的基于文件名的自动模块。”警告意味着什么?

在我的多模块项目中,我只为少数模块创建了module-info.java 。 在使用maven-compiler-plugin:3.7.0我收到了下一个警告: [警告] *检测到必需的基于文件名的自动模块。 请不要将此项目发布到公共工件库! * 这是什么意思? 那是因为我只有几个模块与module-info.java而不是整个项目?

如何在不破坏Maven发布插件的情况下传递javac多个命令行参数,其中一些包括冒号?

当我忘记在Serializable类中声明serialVersionUID时,我想让我的Maven构建失败。 使用javac ,这很简单: $ javac -Xlint:serial -Werror Source.java 直接将其翻译为Maven不起作用: org.apache.maven.plugins maven-compiler-plugin 2.5.1 -Xlint:serial -Werror 引用了compilerArgument ,因此javac只接收一个参数,包含-Xlint:serial -Werror ,而不是-Xlint:serial和-Werror作为单独的参数。 所以你阅读了文档,并找到compilerArguments : org.apache.maven.plugins maven-compiler-plugin 2.5.1 这看起来很奇怪 – 冒号在Xlint命名空间中创建了serial元素,它没有在任何地方声明 – 但它可以工作……直到你想要发布一个版本: $ mvn release:prepare org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project my-project: Error reading POM: Error on line 58: The prefix “Xlint” for element “Xlint:serial” is […]

Maven构建编译错误:无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目Maven上编译(default-compile)

我有一个maven项目分叉并从git repo克隆到我的eclipse上。 它建立在Java 8之上。我做的第一件事就是执行一个 mvn clean install 但我收到以下失败消息: [INFO] Scanning for projects… [INFO] [INFO] ———————————————————————— [INFO] Building Maven 0.0.1-SNAPSHOT [INFO] ———————————————————————— [INFO] [INFO] — maven-clean-plugin:2.5:clean (default-clean) @ Maven — [INFO] Deleting /Users/vshukla/git/Prism/target [INFO] [INFO] — maven-resources-plugin:2.6:resources (default-resources) @ Maven — [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, ie build is platform dependent! […]

如何在maven-compiler-plugin中设置-XX:PermSize = 64m?

我假装使用maven-compiler-plugin(v3.2)设置permsize或maxpermsize。 我试过这样的: org.apache.maven.plugins maven-compiler-plugin 1024m 2024m -XX:PermSize=128m 这导致错误 Caused by: org.codehaus.plexus.compiler.CompilerException: invalid flag: -XX:MaxPermSize=256m -XX:PermSize=128m at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:191) at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169) at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:785) … 22 more Caused by: java.lang.IllegalArgumentException: invalid flag: -XX:MaxPermSize=256m -XX:PermSize=128m at com.sun.tools.javac.api.JavacTool.processOptions(JavacTool.java:231) at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:199) at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68) at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:115) … 24 more 我的另一个尝试是添加它,如示例http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html org.apache.maven.plugins maven-compiler-plugin 1024m 2024m 128m 1024m 256m 128m 导致同样的错误: Caused by: org.codehaus.plexus.compiler.CompilerException: […]

什么是默认注释处理器发现过程?

Maven Compiler插件的文档提到了以下内容 : annotationProcessors: 要运行的注释处理器的名称。 仅适用于JDK 1.6+如果未设置,则应用默认注释处理器发现过程。 这里的默认注释处理器发现过程是什么? 有没有其他方法来设置注释处理器而不是此配置标签? 我发现注释处理工具入门(apt)文档提到了一个默认的发现过程 ,但是它适用于工厂类而不是处理器,不幸的是它使用了tools.jar和com.sun包。 这是默认的注释处理器发现过程吗?

–add-modules仅在编译时

我正在用maven和java-9构建我的项目。 我在我的pom.xml文件中添加了: maven-compiler-plugin ${maven-compiler-plugin.version} ${java.version} ${java.version} –add-modules java.xml.bind 但是,要运行应用程序,我必须像这样运行它: java -jar –add-modules java.xml.bind my-app.jar 有没有办法构建应用程序,从没有–add-modules java.xml.bind的命令行运行到java命令行参数?

Eclipse / Idea忽略了Maven Java版本配置

我有: org.apache.maven.plugins maven-compiler-plugin 3.1 1.6 1.6 但我宣布:没有问题: public enum DirectoryWatchService { INSTANCE; private java.util.Optional test; private java.nio.file.Files files; } Eclipse不打扰。 IntelliJ既不是。 即使是Maven也不会打扰。 我甚至可以做一个mvn清洁包 。 在没有任何警告的情况下构建健康的东西。