[英]How to Distributable Artifact/Classifier Jars : Complaining of missing pom file
項目背景; 我小組中的大量JNI項目。 由於JNI項目本身具有依賴關系鏈,因此希望簡化構建/發布策略。
使用類似於此處的模型: http : //mail-archives.apache.org/mod_mbox/maven-users/200706.mbox/%3C56761.84.233.182.145.1181035390.squirrel@www.sharp.fm%3E作為原型效果很好。 分發模塊添加適當的罐子,並使用分類器。 最終jar的示例是CiscoJ-dist-unix-amd64.jar。
我遇到的問題是安裝程序創建了項目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。 }
在項目中嘗試使用與體系結構相關的信息進行構建。
<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>
根據這個; http://maven.40175.n5.nabble.com/pom-does-not-get-installed-if-classifier-used-td120388.html ; 應該用我的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-install-plugin安裝文件感到有些困惑,但是還沒有成功。
我認為我確定我的文件中有一個無效的工件,試圖使用該工件。 我相信,並且看起來像它可行,應該與父項目一起訪問它作為組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>
khmarbaise,非常感謝以上評論。 暫時擱置,直到進一步確定這不是有效答案。 至少到目前為止,我可以看到一個有效的依賴樹。
[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] ------------------------------------------------------------------------
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.