Java 在mvn包之后创建指向当前jar包的符号链接
我的jar文件名在pom.xml中的配置如下:Java 在mvn包之后创建指向当前jar包的符号链接,java,maven,jar,Java,Maven,Jar,我的jar文件名在pom.xml中的配置如下: <finalName>MyApp-${project.version}</finalName> MyApp-${project.version} 我希望Maven('mvn package')在每次运行时都创建一个指向当前jar文件的符号链接,这样我就有两个文件: MyApp-1.0.3.jar MyApp.jar(即“ln-s MyApp-1.0.3.jar MyApp.jar”)您可以使用以下方法来实现此目标: &
<finalName>MyApp-${project.version}</finalName>
MyApp-${project.version}
我希望Maven('mvn package')在每次运行时都创建一个指向当前jar文件的符号链接,这样我就有两个文件:
MyApp-1.0.3.jar
MyApp.jar
(即“ln-s MyApp-1.0.3.jar MyApp.jar”
)您可以使用以下方法来实现此目标:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>1.6.0</version>
<executions>
<execution>
<id>Version Calculation</id>
<phase>verify</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>ln</executable>
<arguments>
<argument>-fnsv</argument>
<argument>target/MyApp-${project.version}.jar</argument>
<argument>MyApp.jar</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
您可以使用ant run插件的符号链接任务/目标
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<symlink link="${project.build.directory}/${project.artifactId}.jar"
resource="${project.build.directory}/${project.artifactId}-${project.version}.jar"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven antrun插件
1.8
包裹
跑
如果希望符号链接具有相对路径,可以在下面的参考资料中提供相对路径
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<symlink link="${project.build.directory}/${project.artifactId}.jar"
resource="./${project.artifactId}-${project.version}.jar"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven antrun插件
1.8
包裹
跑
您应该能够使用一些插件来实现这一点,这些插件允许您创建链接或执行shell脚本(或者只创建两次jar)。但你为什么要这么做?为什么不使用版本化的jar?仅供参考:verify
is-goal用于更安全地执行package
goal中的ln命令行jar创建。这在我的Macbook中有效,但在我的Linux服务器中失败。在这里使用Ubuntu 18.04。您应该使用${project.artifactId}-${project.version}.jar,而不是${project.version}.jar${project.build.finalName}.jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<symlink link="${project.build.directory}/${project.artifactId}.jar"
resource="./${project.artifactId}-${project.version}.jar"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>