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

Mus*_*que 1 maven-3 maven maven-jar-plugin

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

正如我在日志中看到的那样,jar不再创建.所以maven知道所有课程都是最新的.

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

A_D*_*teo 5

Maven的Jar插件将通过它创建了一个JAR jar如果不存在,或者如果存在,但没有改变跳过它的创作目的.

您可以通过其选项强制创建jar forceCreation(从2.2版开始).从官方文件:

即使没有任何内容似乎已更改,也需要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>
Run Code Online (Sandbox Code Playgroud)

或者只在一个构建上,调用它如下:

mvn package -Djar.forceCreation=true
Run Code Online (Sandbox Code Playgroud)

那么,回到你的问题:

是否有任何过程或其他事情可以解决这个问题?

答案是:是的,Maven Jar插件适用于此,上面的选项将改变其行为.