如果所有类都是最新的“ Nothing to compile - all classes are up to date
”那么maven会再次创建jar吗?
正如我在日志中看到的那样,jar 没有再次创建。所以 maven 知道所有的类都是最新的。
问题:是否有任何流程或其他东西可以解决这个问题?
如果所有类都是最新的“ Nothing to compile - all classes are up to date
”那么maven会再次创建jar吗?
正如我在日志中看到的那样,jar 没有再次创建。所以 maven 知道所有的类都是最新的。
问题:是否有任何流程或其他东西可以解决这个问题?
如果不存在,Maven Jar 插件将通过其目标创建一个 jar,jar
如果存在但没有任何更改,则跳过其创建。
您可以通过其选项强制创建 jar(从2.2版开始)。来自官方文档:forceCreation
要求 jar 插件构建一个新的 JAR,即使内容似乎都没有改变。默认情况下,此插件会查看输出 jar 是否存在并且输入是否未更改。如果这些条件为真,插件将跳过 jar 的创建。当其他插件(如 maven-shade-plugin)配置为对 jar 进行后处理时,这不起作用。该插件无法检测到后处理,因此将后处理的 jar 留在原处。当这些插件不希望找到自己的输出作为输入时,这可能会导致失败。将此参数设置为 true 可通过强制此插件每次重新创建 jar 来避免这些问题。
它的默认值是 at false
,它解释了你的行为。
如果你想一直强制它,你可以添加到你的 pom 文件中:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<forceCreation>true</forceCreation>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
或者只是在单个构建中,调用它如下:
mvn package -Djar.forceCreation=true
所以,回到你的问题:
是否有任何流程或其他事情可以解决这个问题?
答案是:是的,Maven Jar 插件可以解决这个问题,上面的选项会改变它的行为。