问题标签 [maven-compiler-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在不破坏 Maven 发布插件的情况下传递 javac 多个命令行参数,其中一些参数包括冒号?
当我忘记在类中声明 serialVersionUIDs 时,我想让我的 Maven 构建失败Serializable
。有了javac
,这很容易:
直接将其翻译为 Maven 不起作用:
被compilerArgument
引用,因此javac
只接收一个参数,包含-Xlint:serial -Werror
, 而不是-Xlint:serial
和-Werror
作为单独的参数。所以你阅读了文档,发现compilerArguments
:
这看起来很奇怪 - 冒号serial
在命名空间中创建元素Xlint
,它没有在任何地方声明 - 但它可以工作......直到你想要发布:
$ 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 not bound.
显然,常规 POM 阅读器以另一种方式处理 XML 命名空间,而不是发布插件使用的方式。
那么,javac
当其中一些开关包含对纯 XML 元素无效的字符时,如何在不破坏发布插件的情况下传递多个命令行开关?
java - 什么是默认注释处理器发现过程?
Maven Compiler 插件的文档提到以下内容:
注释处理器:
要运行的注释处理器的名称。仅适用于 JDK 1.6+ 如果未设置,则应用默认注释处理器发现过程。
这里默认的注释处理器发现过程是什么?除了这个配置标签,还有其他方法可以设置注释处理器吗?
我发现注释处理工具入门(apt)文档提到了一个默认的发现过程,但它适用于工厂类而不是处理器,不幸的是它使用了 JDK 中的tools.jar
和com.sun
包。这是默认的注释处理器发现过程吗?
java - Maven webapp“javac:-endorseddirs 需要一个参数”
我有一个使用 maven-compiler-plugin 的 Maven webapp。几天前,我可以很好地编译和运行该应用程序,但是发生了一些事情,现在编译失败并出现以下错误:
它与编译器有关,但我无法理解。这是我的 pom.xml(只是插件):
我已经尝试过一些这样的解决方案。
maven - 编译的类与 maven 目标“编译”不同,并在目标文件夹中自动生成
在 Spring3+Maven+Tomcat6 Web 项目中..
我尝试在 REST api Controller 中使用相同的 RequestMapping。
因为..我需要不同用途的不同战争。
所以,我生成了同名控制器,但不同的包。
例如...
1. xxx.controller.agent.UserController
2. xxx.controller.console.UserController
在 pom.xml..
1. maven -> build(war:war) -> get console.war include xxx.controller.agent.UserController
2. 取消注释 testExcludes 中
的注释行并排除 3. 注释 testExcludes 中未注释的行并排除
4. maven -> 更新项目配置
5. maven -> build (war:war) -> get agent war include xxx.controller.console.UserController
但是,我不想为每个战争版本编辑 pom.xml。我尝试使用 Maven 配置文件元素构建每个战争文件。所以,我编辑了我的 pom.xml,如下所示..
和 Maven 构建..(goal="package" 或 "compile war:war", profile="console" 或 "agent" 在每种情况下)
构建成功..(无编译错误)但战争异常。
我将war文件复制到tomcat webapp目录,并执行startup.bat文件。
在控制台日志中..发生了很多错误。
也许我认为 maven compile 有一些问题。
我解压了每个构建方法的war文件(使用配置文件和旧方法)。
但是,类文件的数量不同......
感谢您的帮助,非常感谢!
maven - Maven 内存不足构建失败
截至今天,我的 Maven 编译失败。
[错误] 内存不足;要增加内存量,请在启动时使用 -Xmx 标志(java -Xmx128M ...)
截至昨天,我已经成功运行了一个 Maven 编译。
截至今天,我刚刚将堆增加到3 GB。另外,我只更改了 2-3 行小代码,所以我不理解这个“内存不足”错误。
编辑:我通过更改失败模块的 pom.xml 来尝试发布者的评论。但我得到了同样的 Maven 构建错误。
maven-3 - 如何使用 exec 插件运行 maven compile 两次?
我有一个简单的代码生成器 G,它从我的项目中读取一个接口 A 并从中生成一个新的接口 B。因此我需要实现这一点:
- 编译 A
- 执行 G
- 编译 B
第 1 步和第 3 步由 maven-compiler-plugin 处理,而第 2 步我使用 maven-exec-plugin。目前第 1 步和第 2 步运行良好,但我不知道如何再次运行编译器插件来编译新生成的 B 版本。
maven可以做到这一点,还是有另一种方法可以解决我的问题?
解决方案:
根据 khmarbaise 的回答,我将其添加到我的 pom.xml 中,以让第一次编译在generate-sources阶段运行,并在process-sources阶段生成代码,使生成的类在编译阶段可用:
java - 自定义注释处理、生成文档和 Maven 3
我的目标是“读取”某个包的 Java 类,然后处理该包中的类和这些类中的方法上的 Javadoc 和注释(最好同时)。解决方案必须在 Java 6 或 7 中实现,构建工具是 Maven 3。我们目前正在使用maven-compiler-plugin
, version 2.5.1
,但如果可用/必要,我可能会进一步升级。
据我了解,这些javax.annotation.processing
类的目的是做这种事情,我相信按照这个其他 SO 答案的 Java 代码应该适用于我的目的,但是如何让它实际运行的实际细节仍然是有点模糊。
说了这么多,这就是我认为我需要的:
- Java 代码挑选出我想要的注释和 Javadoc 项目,然后将这些项目转换为创建我的自定义文档所需的数据模型。
- Java 代码,然后将此数据模型写入 docs 文件或文件目录
- Maven 3 配置为:
- 适时运行一次注释处理器
- 在输出的war文件中包含生成的docs目录
Maven 位比 Java 代码更让我感到困惑,所以如果你只回答一半,那就是我的复选标记的一半。此外,我的偏好是不要将此注释处理器作为单独的插件放入 Maven 存储库,因为它将与我们正在使用的一些自定义注释紧密耦合。
以下是我发现的相关问题的简短列表,但我无法综合自己的答案:
java - 使用 Maven 编译 Java 代码时出现 ArrayIndexOutOfBoundsException
仅在运行时出现以下错误mvn clean
:
我使用的环境如下:
- 日食伽利略
- Java 1.6.0_34(64 机器上的 32 位)
- JBoss 缝 2.2
- JBoss AS 5.1
可能是什么问题呢?
maven - 如何让 Maven 从修改的代码(delombok'd)而不是从 src/main/java 编译
使用 delombok maven 插件将我的所有文件放在“target/generated-sources/delombok”中。当我尝试运行 maven 编译器时,它会抱怨重复的类,所以我按照这个问题的建议将 addOutputDirectory 设置为 false 。现在的问题是 delombok 的文件被忽略了,因此编译器抱怨缺少方法。
如何告诉 maven 编译器插件忽略默认的“src/main/java”目录,而是使用“target/generated-sources/delombok”目录进行编译?
当编译器运行时,运行 mvn compile -X 会产生以下输出:
然后再往下打印命令行选项,我可以看到 -sourcepath 参数是:-sourcepath C:\Users\Jamey.Holden\workspace\Apollo\Website\src\main\java;C:\Users\Jamey.Holden\workspace\Apollo\Website\target\generated-sources\java;
这些都不是 delombok 目录,所以它在尝试编译时找不到所有的 getter 和 setter 是很公平的。
更新 我想我已经找到了问题的根源。我正在设置 proc=none 以防止注释处理,因为我正在使用 queryDSL 生成元实体,并且当未设置此项以避免注释处理时,编译器发现重复实体错误。删除 proc=none 和 querydsl 注释处理器解决了这个问题。现在我只是去让 m2e 再次工作。
maven - maven编译插件,build helper插件不生成class文件
我正在尝试将现有项目转换为 Maven 项目。它有 3 个模块,其中一个模块有多个源文件夹。 http://i.imgur.com/jZCnR.png
maven clean and install 或 eclipse clean 不会在 classes 和 test-classes 文件夹中创建类文件。项目结构是由那里没有类文件创建的。
以下插件配置在父 pom.xml 中定义。
我究竟做错了什么?