我正在使用maven-assembly-plugin打包一个项目,以生成一个包含我的依赖项的jar:
elem
我还在<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${project.main.class}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
阶段使用自定义插件将此jar发送到使用RMI的远程设备:
install
在设置RMI插件的<plugin>
<groupId>za.co.pietermuller.ev3</groupId>
<artifactId>lejos-rmi-exec-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<target>?????</target>
</configuration>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>lejos-rmi-exec</goal>
</goals>
</execution>
</executions>
</plugin>
属性时,有没有办法让我使用maven-assembly-plugin
插件的确切输出路径和文件名?
我尝试了target
和${project.build.outputDirectory}
的组合以及一些硬编码,但这些都没有给我我所需要的。
答案 0 :(得分:3)
我不知道应该target
给lejos-rmi-exec-maven-plugin
什么,但如果我们假设您需要生成jar(或zip或其他格式)的路径,那么解决方案将使用属性。
在您的pom的根级别(位于代码build
的同一级别),在代码properties
中,添加一些属性,例如:
<properties>
<myproperties.myassembly.build.dir>${project.build.directory}/my-assembly-target-dir/</myproperties.myassembly.build.dir>
<myproperties.myassembly.build.finalName>my-finalName-assembly</myproperties.myassembly.build.finalName>
</properties>
然后在maven-assembly-plugin
中,在执行中,使用它们:
<execution>
<id>testfinalName</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${myproperties.myassembly.build.finalName}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>${myproperties.myassembly.build.dir}</outputDirectory>
<descriptorId>jar-with-dependencies</descriptorId>
</configuration>
</execution>
您知道文件的路径为${myproperties.myassembly.build.dir}/${myproperties.myassembly.build.finalName}.jar
(或。your_choosen_format
),您可以在目标中使用它。
默认情况下,maven-assembly-plugin
用于finalName
附加${project.artifact.artifactId}-${project.artifact.version}
的模式assemblyId
(后跟短划线-
)必要。然后在创建存档时添加格式。
要完成,如果我们假设target
需要生成文件的路径,那么您的第二个插件将会是这样的(根据您生成的程序集当然是jar
这一事实):
<plugin>
<groupId>za.co.pietermuller.ev3</groupId>
<artifactId>lejos-rmi-exec-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<target>${myproperties.myassembly.build.dir}/${myproperties.myassembly.build.finalName}.jar</target>
</configuration>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>lejos-rmi-exec</goal>
</goals>
</execution>
</executions>
</plugin>