Java 如何分发工件/分类器JAR:抱怨缺少pom文件
项目背景;我的团队有大量的JNI项目。希望简化构建/发布策略,因为JNI项目本身具有依赖链 使用了与此处类似的模型:作为一个运行良好的原型。分发模块添加适当的jar并使用分类器。最后一个jar示例是CiscoJ-dist-unix-amd64.jar 我遇到的问题是,install创建了项目pom,但试图在项目中使用分类器jar,它正在寻找与分类器匹配的pom文件;因此,从上面看,它正在寻找J-dist-unix-amd64.pom。唯一存在的pom当然是pom J-dist.pom项目 [警告] com.cisco.ciscossl:CiscoJ dist:jar:unix-amd64:1.00的POM丢失,否 可用的依赖项信息[DEBUG]依赖项集合统计信息: {ConflictMarker.analyzeTime=1,ConflictMarker.markTime=0, ConflictMarker.nodeCount=4,ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=1,ConflictIdSorter.conflictIdCount=3, ConflictIdSorter.conflictIdCycleCount=0,ConflictResolver.totalTime=2, ConflictResolver.conflictItemCount=3, DefaultDependencyCollector.collectTime=290, DefaultDependencyCollector.transformTime=6} 试图使用体系结构相关信息进行构建的项目中Java 如何分发工件/分类器JAR:抱怨缺少pom文件,java,maven,classification,Java,Maven,Classification,项目背景;我的团队有大量的JNI项目。希望简化构建/发布策略,因为JNI项目本身具有依赖链 使用了与此处类似的模型:作为一个运行良好的原型。分发模块添加适当的jar并使用分类器。最后一个jar示例是CiscoJ-dist-unix-amd64.jar 我遇到的问题是,install创建了项目pom,但试图在项目中使用分类器jar,它正在寻找与分类器匹配的pom文件;因此,从上面看,它正在寻找J-dist-unix-amd64.pom。唯一存在的pom当然是pom J-dist.pom项目 [警告
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>com.cisco.ciscossl</groupId>
<artifactId>CiscoJ-dist</artifactId>
<classifier>${os.family}-${os.arch}</classifier>
<version>1.00</version>
</dependency>
</dependencies>
据此;;它应该在我的maven 3.1.1版本中修复
项目的Pom文件
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.cisco.ciscossl.CiscoJ</groupId>
<artifactId>CiscoJ-dist</artifactId>
<version>1.00</version>
<packaging>jar</packaging>
<parent>
<groupId>com.cisco.ciscossl</groupId>
<artifactId>CiscoJ</artifactId>
<version>1.00</version>
</parent>
<dependencies>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>CiscoJUtils</artifactId>
<version>1.00</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>CiscoJCE</artifactId>
<version>1.00</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>CiscoJSafeC</artifactId>
<version>1.00</version>
<classifier>${os.family}-${os.arch}</classifier>
<optional>true</optional>
</dependency>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>CiscoJCEJNI</artifactId>
<version>1.00</version>
<classifier>${os.family}-${os.arch}</classifier>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>package-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist-jar.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
汇编程序:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>${os.family}-${os.arch}</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<excludes>
<exclude>org.slf4j:slf4j-simple</exclude>
<exclude>org.slf4j:slf4j-api</exclude>
<exclude>junit:junit</exclude>
</excludes>
<unpack>true</unpack>
<useTransitiveDependencies>false</useTransitiveDependencies>
</dependencySet>
</dependencySets>
</assembly>
我对工件的maven安装插件安装文件做了一些修改,但还没有成功。我想我已经确定在试图使用工件的文件中有一个无效工件。我相信,而且看起来它是有效的,应该将父项目作为组id/路径的一部分来访问它。就像下面
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>com.cisco.ciscossl.CiscoJ</groupId>
<artifactId>CiscoJ-dist</artifactId>
<classifier>${os.family}-${os.arch}</classifier>
<version>1.00</version>
</dependency>
</dependencies>
J-Dist项目的pom是什么样子的?我确实在查看日志文件和您的评论时发现了一个错误;我将其打包为pom文件,而不是jar。它现在正在我们的构建服务器上再次运行。。。在编辑原始评论时发布pom文件pom错误未修复问题;上面的pom文件就是使用的。仍然有问题下载分类器pom文件,该文件不存在。您已经创建了一个jar类型的项目CiscoJ dist。但您希望将其与分类器一起使用。根据你发布的pom,我没有看到分类器。仅在maven程序集调用的情况下。那么你能发布程序集描述符吗?编辑以包含程序集。。。正如你所指出的,我可能对分类器的配置有误。我在查看文档时发现分类器已弃用;建议使用id。
[INFO] Building test-CiscoJ-disk 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ test-CiscoJ-dist ---
[INFO] com.cisco.ciscossl:test-CiscoJ-dist:jar:0.0.1-SNAPSHOT
[INFO] +- junit:junit:jar:4.11:compile
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] \- com.cisco.ciscossl.CiscoJ:CiscoJ-dist:jar:unix-amd64:1.00:compile
[INFO] +- org.slf4j:slf4j-simple:jar:1.7.2:compile
[INFO] \- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] ------------------------------------------------------------------------