我们正在使用Maven Central Repository中不存在的第三方库,我们不会将此存档作为工件部署到Artifactory。我们正试图通过Artifactory UI来实现这一点,并且我们成功部署了archive.jar和archive-sources.jar。当我们通过Gradle将此依赖项添加到build.gradle脚本时,会出现问题。 Archive.jar是从我们的存储库中获取的,但是不提取archive-sources.jar。我们正在使用Eclipse进行开发,您可以通过屏幕截图查看问题。
我们尝试了一些方法,包括在Artifactory UI中定义分类器,使用Artifactory POM编辑器编辑pom,手动发布pom文件以及什么都不起作用。无论我们做什么,我们都无法获得此档案的来源。任何形式的帮助都可以节省大量的时间和精力。谢谢!
Artifactory UI的屏幕截图:
答案 0 :(得分:0)
我们已经解决了这个问题,但它有点复杂。解决方案有很多步骤:
对于jain-sdp存档,以下是步骤:
1-使用分类器“sources”部署jain-sdp sources工件,如屏幕截图所示。
2-手动上传包含“sourceDirectory”标记的jain-sdp.pom文件:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>javax.sip</groupId>
<version>1.2</version>
<artifactId>jain-sip</artifactId>
</parent>
<groupId>javax.sdp</groupId>
<artifactId>jain-sdp</artifactId>
<version>1.0.1111</version>
<packaging>jar</packaging>
<name>jain-sdp</name>
<url>http://jain-sip.dev.java.net</url>
<build>
<sourceDirectory>../../src/javax/</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<includes>
<include>**/sdp/**</include>
</includes>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>target/javax/</directory>
<includes>
<include>sdp/**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</project>
3-手动创建以下文件。
的pom.xml:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>javax.sip</groupId>
<version>1.2</version>
<artifactId>jain-sip</artifactId>
</parent>
<groupId>javax.sdp</groupId>
<artifactId>jain-sdp</artifactId>
<version>1.0.1111</version>
<packaging>jar</packaging>
<name>jain-sdp</name>
<url>http://jain-sip.dev.java.net</url>
<build>
<sourceDirectory>../../src/javax/</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<includes>
<include>**/sdp/**</include>
</includes>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>target/javax/</directory>
<includes>
<include>sdp/**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</project>
pom.properties:
#Generated by Maven
#Tue Feb 05 21:33:14 CET 2008
version=1.2
groupId=javax.sdp
artifactId=jain-sdp
4-将步骤3中创建的文件包含在存档中的以下路径中:
META-INF /行家/ javax.sdp /耆那-SDP / pom.properties META-INF /行家/ javax.sdp /耆那-SDP / pom.xml的
请注意,这些文件应添加到jain-sdp.jar中,而不是jain-sdp-sources.jar
5-通过UI将jain-sdp.jar上传到Artifactory
我认为这些步骤应该手动完成。我无法想到解决这个问题的其他方法。应手动将sourceDirectories手动包含在pom文件和归档文件中。
答案 1 :(得分:0)
将您的源文件添加到您的jar中,观察与类文件内容相同的目录结构。
这意味着您无需管理其他工件,也无需更新pom.xml
在CLI上执行此添加的最简单步骤是:切换到源目录并“更新”jar。使用此特定的当前工作目录执行此操作,该目录将保留正确的相对文件名。
例如,我有目录结构:
~/project/src/com/mycompany
~/project/target
并在〜/ project / target中创建了一个名为existing.jar
的jar$ cd ~/project/src; jar uvf ../target/existing.jar com
$ jar tvf ~/project/target/existing.jar
应该在同一个树中显示类文件和源文件。
...
6923 Sun Sep 18 23:19:36 PDT 2016 org/spacehq/reddit/util/http/ResponseType.class
4676 Sun Sep 18 22:30:38 PDT 2016 org/spacehq/reddit/util/http/ResponseType.groovy
...
IntelliJ IDEA在jar中检测这些源文件,并在打开相关的类文件时显示它们。我假设其他功能齐全的IDE也会。
当然,您应该能够以某种方式使用Maven自动化,以取消人性化步骤,但这对于一次性有用。