7

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

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

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

  • mvn clean install -P DEV --> ws-client-DEV.jar
  • mvn clean install -P STAGE --> ws-client-STAGE.jar
  • mvn clean install -P PROD --> ws-client-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>
4

2 回答 2

9

与 Bhaskar 相似,但略有修改。

在 <build> 标签之后,添加

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

于 2012-05-01T17:11:10.183 回答
3

在 <build> 标签之后,添加

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

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

mvn -P DEV -Dlane=DEV 等。

或者您可以更有创意并发现活动配置文件 ID,如此处所述Maven - 我可以在配置文件定义中引用配置文件 ID 吗?

编辑 - - -

如果你想避免多余的参数。

为什么不使用 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 配置文件也是如此。

于 2012-05-01T16:45:40.243 回答