在assembly-plugin(包含依赖项)jar中包含Maven配置文件名称

时间:2012-05-01 16:31:04

标签: java maven-3 maven-assembly-plugin

我正在使用maven-assembly-plugin来构建一个带有依赖项的可执行的单片jar。我还使用资源过滤来设置一些自定义,特定于通道(dev,stage,prod等)的属性。

如何使jar的finalName包含通道名称(dev,stage,prod等)?

我希望以下mvn命令可以生成看起来像这样的jar:

  • mvn clean install -P DEV - > WS-客户DEV.jar
  • mvn clean install -P STAGE - > WS-客户STAGE.jar
  • mvn clean install -P PROD - > WS-客户PROD.jar

在某处我找不到maven属性吗?我想尽可能避免使用冗余命令行参数(即 - 'mvn clean install -P DEV -Dlane = DEV')。

这是我的程序集插件配置:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2.2</version>
    <executions>
        <execution>
            <id>jar-with-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>ws-client</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <archive>
            <manifest>
                <mainClass>Example</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

2 个答案:

答案 0 :(得分:9)

与Bhas​​kar类似,但略有修改。

&lt; build&gt;之后标签,添加

<finalName>${project.artifactId}-${lane}</finalName>

您可以将通道值设置为配置文件中的属性。

<profiles>
    <profile>
        <id>DEV</id>
        <properties>
            <lane>DEV</lane>
        </properties>
    </profile>
</profiles>

然后像你说的那样执行构建: mvn ... -P DEV(例如mvn clean install -P DEV)

答案 1 :(得分:2)

&lt; build&gt;之后标签,添加

<finalName>${project.artifactId}-${lane}</finalName>

并将“lane”env变量设置为配置文件名称,例如

mvn -P DEV -Dlane = DEV等。

或者您可以更具创意,并发现此处所述的有效个人资料ID Maven - Can I reference profile id in profile definition?

编辑------

如果你想避免多余的论点。

为什么不使用env触发相应的配置文件。属性。

所以在命令行

mvn -Dlane=DEV|STAGE|PROD

并在pom中

<profile>  
  <id>DEV</id>  
  <activation>
    <property>
      <name>lane</name>
      <value>DEV</value>
    </property>
  </activation>
  <build>  
    // rest of the profile  
</profile>

对于STAGE和PROD配置文件也一样。