在另一个插件中使用maven-assembly-plugin的最终输出文件名

时间:2015-04-26 11:51:49

标签: maven maven-assembly-plugin

我正在使用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}的组合以及一些硬编码,但这些都没有给我我所需要的。

1 个答案:

答案 0 :(得分:3)

我不知道应该targetlejos-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>