Java 在mvn包之后创建指向当前jar包的符号链接

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”)您可以使用以下方法来实现此目标: &

我的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”

您可以使用以下方法来实现此目标:

 <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>