问题标签 [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.

0 投票
4 回答
82488 浏览

maven - Maven - 从构建中排除文件夹

试图src/main/resources/scripts/从我的构建中排除一个文件夹,但以下内容不起作用:

有任何想法吗?

0 投票
3 回答
10811 浏览

maven - 如何在 Maven 构建中永久排除一个测试类

我试图从我的 Maven 构建中排除一个测试(我不希望编译或执行测试)。以下不起作用:

实现目标的正确方法是什么?我知道我可以使用命令行选项-Dmaven.test.skip=true,但我希望它成为pom.xml.

0 投票
3 回答
18073 浏览

java - Excluding package with maven-compiler-plugin works for one package but doesn't work for another

My project has the following package structure:

I use Maven to build the project, in my pom.xml, I defined maven-compiler-plugin to test excluding a package with all its java classes.

I first tried following way to exclude package com.my.app.school.course.free:

It works! I mean after run mvn clean install, the final build under target/classes/ doesn't have the package com/my/app/school/course/free .

Then, I tried to exclude package com.my.app.school.course . I simply replace the above <exclude> tag with value <exclude>**/com/my/app/school/course/*</exclude>. I thought it should work too , but it doesnt! Under target/classes/ I see all packages, no package is excluded. Why?

What I want to achieve is to exclude package com.my.app.school.course but keep pacakge com.my.app.school.course.free , how to achieve this?

======== update ========

I feel it might be because the package I tried to exclude contain java classes that have been used in other packages. I will verify my guess.

0 投票
0 回答
1016 浏览

maven - maven编译器的问题

我正在尝试将 jetty 插件用于 grails 项目。我目前正在使用 jdk 1.6.0_45。jdk 1.6使用的jre版本似乎对于jetty插件来说有点旧,它会产生以下错误。

为了解决这个错误,我在 pom.xml 中添加了一个代码来使用 java 源 1.7。代码是这样的。

但我仍然继续得到同样的错误。任何机构都可以帮助我。

我发布了我的整个 pom.xml 和我得到的错误

pom.xml

错误

0 投票
2 回答
101 浏览

java - Java 项目强制家属采用 Java 版本?

这是一个问题。假设我有一个 Maven 项目(“A”),它引入了一个不同的 Maven 项目(“B”)作为依赖项。目前两者都使用 Java 7 进行编译。如果项目 B 切换到 Java 8,是否会强制项目 A 也使用 Java 8?

如果是这样,有没有办法解决它 - 也就是说,让项目 B 生成项目 A 可以使用的代码,而无需将项目 B 降级到 Java 7 或将项目 A 升级到 Java 8?例如,让项目 B 执行某种形式的“源 1.8 目标 1.7”,例如。(javac 似乎不喜欢这样,而且我找不到替代编译器——例如,plexus-compiler-eclipse 不支持 Java 8,但这完全是另一个问题;问题是解耦从用于生成它的源版本生成的字节码)

0 投票
2 回答
4888 浏览

maven - 指定 fork=true 时,maven-compiler-plugin 不进行注释处理?

maven-compiler-plugin在一个 Maven 项目中使用对我的代码执行注释处理。它一直在工作,直到我添加了一个<fork>true</fork>配置选项。

pom.xml文件具有以下内容:

my-processor-1.0.jar文件包含一个META-INF/services/javax.annotation.processing.Processorjavac文件,以便编译器可以在运行时发现它。

当我使用此配置运行mvn clean compile时,我看到注释处理器运行并且生成的代码按预期放入target\generated-sources\annotations目录中。

但是,如果我<fork>true</fork>在插件配置中添加一个选项,那么我观察到注释处理器没有运行,并且target\generated-sources\annotations目录中不存在任何代码。

我在maven-compiler-plugin2.5.1、3.0 和 3.1 版本中进行了尝试(对于 3.x 版本,我必须<forceJavaCompilerUser>true</forceJavaCompilerUser>在配置中添加一个选项,以便发现注释处理器 jar)。

我还尝试明确指定注释处理器:

同样,对于版本 2.5.1、3.0 和 3.1,如果配置选项未指定分叉,则将调用注释处理器。指定选项时<fork>true</fork>,注释处理器将不会运行。

我还在x.y.z:my_processor依赖项之外添加了maven-compiler-plugin依赖项,以确保已加载注释处理器依赖项。

maven-compiler-plugin配置时注释处理是否仍然有效<fork>true</fork>?还是我错误地配置了插件?

请注意,我不想将编译拆分为单独的执行(例如,一个执行在没有注释处理的情况下编译,使用<fork>true</fork>,另一个执行只进行注释处理,使用<fork>false</fork>,因为第二次执行再次重新编译整个源,这在处理成千上万的源文件,除非有办法解决这个问题)。

我正在使用 JDK 1.7.0_45。

编辑#1

实际上,解决方案是将处理器依赖项从插件的依赖项中移出并移至正常的依赖项中:

我以为我已经对此进行了测试,但我可能一直在寻找控制台输出(在进程分叉时不会出现),而不是寻找生成的代码的存在。

0 投票
0 回答
445 浏览

java - 我可以配置 maven-compiler-plugin 来处理 .class 文件而不是 .java 文件吗?

当我javac在命令行上使用处理单个类的注释时,我可以执行以下操作:

我想在 Maven 中做同样的事情,除了使用target/classes目录中的所有类而不是只指定一个类文件。我不想指定任何 java 源文件(隐式或显式),因为我想避免多次加载和解析源文件。

这是否可以配置maven-compiler-plugin为仅加载类文件,而不是加载 java 源文件?我尝试添加以下配置:

但我Nothing to compile - all classes are up to date在插件输出中看到,并没有执行注释处理。

不确定这是否可能,但如果是这样,那就太好了。

编辑#1

实际上这个<includes>选项是不对的,因为javac -proc:only接受类名而不是类文件名(例如xyzFoo不是x/y/z/Foo.class)。我在插件输出中看到以下内容:

我认为不能在插件配置中更改。看起来并不乐观。

0 投票
3 回答
2385 浏览

maven - IntelliJ 14 maven 编译问题

我今天已经更新到 IntelliJ 14.0.1。我导入了我在 IntelliJ 13.1 上工作的 Maven 项目,虽然项目已成功导入,但当我尝试从 IntelliJMake或项目时找不到依赖项。Compile

我需要说的是,当我进行 Maven 安装时,即使是从 IntelliJ 内部,也是成功的。但是当我Make发生项目错误时,表明缺少库(依赖项)。

在我看来,IntelliJ 的编译步骤不知何故没有选择 Maven 依赖项,或者没有考虑到这一点pom.xml

有没有人遇到过类似的事情?关于如何解决这个问题的任何想法?我已经尝试重新导入项目但没有帮助。org.junit.Test此外,我创建了一个只有 JUnit 作为依赖项的虚拟项目,但即便如此,IntelliJ 仍然抱怨当我尝试运行测试时 它无法找到。

更新:

我在 IntelliJ 日志中看到以下内容,这可能是相关的。似乎编译已中止。

2014-11-14 17:17:11,460 [247914] 信息 - j.compiler.server.BuildManager - BUILDER_PROCESS [stdout]: 17:17:11,445 |-ch.qos.logback.classic.LoggerContext [默认] 中的信息 -在 [jar:file:/C:/Program%20Files%20(x86)/JetBrains/IntelliJ%20IDEA%20Community%20Edition%2014.0.1/plugins/gradle/lib/gradle.jar 找到资源 [logback.groovy]! /logback.groovy]

0 投票
3 回答
4168 浏览

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

我无法使用 maven-compiler-plugin (v3.2) 设置 permsize 或 maxpermsize。

我试过这样:

导致错误

我的另一个尝试是在示例 http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html中添加它

导致同样的错误:

那么,为什么这个标志无效?当我将它添加到 MVN_OPTS 变量时,是否会优雅地考虑到它?

0 投票
1 回答
1027 浏览

java - Maven:如何使用输入参数编译项目

我像这样编译我的项目:

但是我的项目对其他服务器有不同的参数,我需要在编译后修复它(例如location=prod在生产服务器和location=dev本地服务器上)我的 web.xml 中有一段代码,如下所示:

我想像这样使用变量位置

类路径:/${location}/properties-config.xml