如何强制Maven始终创建新的jar文件?

如何强制Maven始终创建新的jar文件?,maven,maven-3,maven-jar-plugin,Maven,Maven 3,Maven Jar Plugin,如果所有类都是最新的“无需编译-所有类都是最新的” 那么maven会再次创建jar吗 正如我在日志中看到的,jar不再创建。所以maven知道所有的类都是最新的 问题:是否有任何流程或其他方法可以解决此问题?如果目标不存在,则将通过其目标创建一个jar;如果目标存在但未更改,则跳过其创建 您可以通过其选项强制创建jar(自版本2.2以来)。发件人: 要求jar插件构建一个新的jar,即使内容似乎没有任何变化。默认情况下,该插件查看输出jar是否存在,输入是否没有更改。如果这些条件为真,插件将跳过

如果所有类都是最新的“
无需编译-所有类都是最新的”
那么maven会再次创建jar吗

正如我在日志中看到的,jar不再创建。所以maven知道所有的类都是最新的

问题:是否有任何流程或其他方法可以解决此问题?

如果目标不存在,则将通过其目标创建一个jar;如果目标存在但未更改,则跳过其创建

您可以通过其选项强制创建jar(自版本2.2以来)。发件人:

要求jar插件构建一个新的jar,即使内容似乎没有任何变化。默认情况下,该插件查看输出jar是否存在,输入是否没有更改。如果这些条件为真,插件将跳过jar的创建。当其他插件(如maven shade插件)被配置为对jar进行后期处理时,这不起作用。该插件无法检测到后期处理,因此将后期处理的jar留在原地。当这些插件不希望找到自己的输出作为输入时,这可能导致失败。将此参数设置为true,通过强制此插件每次重新创建jar来避免这些问题

其默认值为
false
,这解释了您的行为

如果要强制它始终,可以将以下内容添加到pom文件中:


...
org.apache.maven.plugins
maven jar插件
2.6
真的
...
...
或者仅在单个构建中,按以下方式调用它:

mvn package -Djar.forceCreation=true

那么,回到你的问题:

是否有任何过程或其他东西可以在这方面起作用

答案是:是的,Maven Jar插件在此基础上工作,上面的选项将更改其行为。

如果不存在Jar,则将通过其目标创建Jar;如果存在Jar,但未更改,则跳过其创建

您可以通过其选项强制创建jar(自版本2.2以来)。发件人:

要求jar插件构建一个新的jar,即使内容似乎没有任何变化。默认情况下,该插件查看输出jar是否存在,输入是否没有更改。如果这些条件为真,插件将跳过jar的创建。当其他插件(如maven shade插件)被配置为对jar进行后期处理时,这不起作用。该插件无法检测到后期处理,因此将后期处理的jar留在原地。当这些插件不希望找到自己的输出作为输入时,这可能导致失败。将此参数设置为true,通过强制此插件每次重新创建jar来避免这些问题

其默认值为
false
,这解释了您的行为

如果要强制它始终,可以将以下内容添加到pom文件中:


...
org.apache.maven.plugins
maven jar插件
2.6
真的
...
...
或者仅在单个构建中,按以下方式调用它:

mvn package -Djar.forceCreation=true

那么,回到你的问题:

是否有任何过程或其他东西可以在这方面起作用


答案是:是的,Maven Jar插件在此基础上工作,上面的选项将改变其行为。

Maven编译器插件
检测到当前在
target
下编译的内容与Java源代码之间没有变化时,“所有类都是最新的”。但是它会在那之后创建JAR。不,如果已经存在,它不会创建JAR。当
maven编译器插件
检测到当前在
target
下编译的内容与您的Java源代码之间没有变化时,我正在使用mvn package命令“所有类都是最新的”。但是它会在那之后创建JAR。不,如果已经存在,它不会创建JAR。我使用的是mvn软件包命令如果您处于跳过测试阶段,您还可以在插件maven-jar-plugin的配置中指定
false
。如果您处于跳过测试阶段,您还可以在插件maven-jar插件的配置中指定
false