2

如果所有类都是最新的“ Nothing to compile - all classes are up to date”那么maven会再次创建jar吗?

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

问题:是否有任何流程或其他东西可以解决这个问题?

4

1 回答 1

6

如果不存在,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 插件可以解决这个问题,上面的选项会改变它的行为。

于 2016-02-18T15:13:20.953 回答