如何使用不同的配置文件管理artifactory / maven工件

时间:2013-03-15 13:03:42

标签: maven maven-3 artifactory maven-profiles

我在理解如何管理使用不同配置文件生成的不同“jar”文件时遇到了一些问题。 一个例子。我有一个项目: my.project:sample:1.0 我们使用两个配置文件:

  1. 使用 Profile1 正在使用java 7和依赖其他编译:project:1.0
  2. 使用 Profile2 正在使用java 6进行编译,并且依赖不同:project:3.0
  3. 在本地环境中使用命令行很容易管理,但我不知道如何在神器上存储和管理它。

    我们有两个不同的项目使用相同的库,但使用不同的配置文件生成:

    1. 项目需要 my.project:sample:1.0 - Profile1
    2. 另一个项目需要 my.project:sample:1.0 - Profile2
    3. 如何使用库和配置文件指定这些依赖性?

      澄清:生成的Jar使用artifactory进行存储,项目使用存储库解析依赖关系。我不能将该项目用作模块。

1 个答案:

答案 0 :(得分:2)

您可以使用分类器来区分工件,并在依赖项中重用分类器。

定义分类器

为此,您需要在maven-jar-plugin中定义分类器:

<profiles>
     <profile>
         <id>profile1</id>
         ...
         <build>
             <plugins>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
                     <version>2.4</version>
                     <executions>
                       <execution>
                       <phase>package</phase>
                       <goals>
                         <goal>jar</goal>
                       </goals>
                       <configuration>
                          <classifier>jdk6</classifier>
                       </configuration>
                      </execution>
                     </executions>
                 <plugin>
             <plugins>
         </build>
     </profile>
     <profile>
         <id>profile2</id>
         ...
         <build>
             <plugins>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
                     <version>2.4</version>
                     <executions>
                       <execution>
                       <phase>package</phase>
                       <goals>
                         <goal>jar</goal>
                       </goals>
                       <configuration>
                          <classifier>jdk7</classifier>
                       </configuration>
                      </execution>
                     </executions>
                 <plugin>
             <plugins>
         </build>
     </profile>
</profiles>

使用依赖的分类器

很简单:

<dependency>
    <groupId>myGroup</groupId>
    <artifactId>myArtifact</artifactId>
    <classifier>jdk6</classifier>
<dependency>