代码之家  ›  专栏  ›  技术社区  ›  Paul McKenzie

在Maven Repo中存储java5和java6 jar

  •  1
  • Paul McKenzie  · 技术社区  · 15 年前

    我认为我需要在我们的内部Maven存储库(Nexus)中存储同一jar的java5和java6版本。怎么用?

    <build>
        <plugins>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <classifier>${jvmClassifier}</classifier>
                </configuration>
            </plugin>
    

    但它被忽略了!

    3 回复  |  直到 15 年前
        1
  •  1
  •   Pascal Thivent    15 年前

    它被忽略,因为 classifier 不是的参数 deploy:deploy deploy deploy:deploy-file 尽管如此)。

    pom.xml 模拟所需的行为(您可能应该使用配置文件):

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <properties>
        <jvmClassifier>jdk16</jvmClassifier>
      </properties>
      <groupId>com.stackoverflow.q3341837</groupId>
      <artifactId>Q3341837</artifactId>
      <version>1.0-SNAPSHOT</version>
      <name>Q3341837</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
              <classifier>${jvmClassifier}</classifier>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.5</version>
            <configuration>
              <altDeploymentRepository>mine::default::file://${basedir}/target/my-repo</altDeploymentRepository>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    mvn deploy

    $ mvn clean deploy
    ...
    $ tree target/my-repo/
    target/my-repo/
    └── com
        └── stackoverflow
            └── q3341837
                └── Q3341837
                    ├── 1.0-SNAPSHOT
                    │   ├── maven-metadata.xml
                    │   ├── maven-metadata.xml.md5
                    │   ├── maven-metadata.xml.sha1
                    │   ├── Q3341837-1.0-20100727.222050-1.pom
                    │   ├── Q3341837-1.0-20100727.222050-1.pom.md5
                    │   ├── Q3341837-1.0-20100727.222050-1.pom.sha1
                    │   ├── Q3341837-1.0-SNAPSHOT-jdk16.jar
                    │   ├── Q3341837-1.0-SNAPSHOT-jdk16.jar.md5
                    │   └── Q3341837-1.0-SNAPSHOT-jdk16.jar.sha1
                    ├── maven-metadata.xml
                    ├── maven-metadata.xml.md5
                    └── maven-metadata.xml.sha1
    
        2
  •  1
  •   Sergii Pozharov    15 年前

    您应该使用version属性,即如果您同时拥有2.1版的Java5和6JAR,那么“完整”版本将是2.1-jdk15和2.1-jdk16。UISpec4J使用这种方法-UISpec4J-2.3-jdk16.jar和UISpec4J-2.3-jdk15.jar

        3
  •  1
  •   Community Mohan Dere    8 年前

    您可以使用不同的Maven概要文件为不同版本的javaplatfom获得不同的构建,这些概要文件指定Maven编译器插件的编译器版本(一个版本为1.5,另一个版本为1.6)。在Sonatype的书中提供了一个提示,书名为 Maven - The Complete Reference

    为了区分罐子, the other answer 提供了一个非常好的提示。如果你想达到同样的效果,你需要调整jar:jar task 在每个概要文件中生成不同的jar,然后可以将其部署到本地存储库。

    推荐文章