通过 UI 将 Sources.jar 存档部署到 Artifactory
Deploying Sources.jar Archive to Artifactory through UI
我们正在使用 Maven 中央存储库中不存在的第三方库,我们不想将此存档作为工件部署到 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:
我们已经解决了这个问题,但是有点复杂。应用解决方案有很多步骤:
对于 jain-sdp 存档,步骤如下:
1- 使用分类器 "sources" 部署 jain-sdp 源工件,如屏幕截图所示。
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/maven/javax.sdp/jain-sdp/pom.属性
META-INF/maven/javax.sdp/jain-sdp/pom.xml
请注意,这些文件应该添加到 jain-sdp.jar,而不是 jain-sdp-sources.jar
5- 通过 UI
上传 jain-sdp.jar 到 Artifactory
我认为这些步骤应该手动完成。我能想到的没有其他方法可以解决这个问题。应该手动将 sourceDirectories 包含到 pom 文件和存档中。
将源文件添加到 jar 中,观察与class 文件内容相同的目录结构。
这意味着您不需要管理另一个工件,也不需要更新您的 pom.xml
执行此添加的最简单步骤是在 CLI 上:切换到您的源目录和 "update" 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
应该在同一树中显示 class 个文件和源文件。
...
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 中的这些源文件,并在打开相关 class 文件时显示它们。我假设其他功能齐全的 IDE 也会。
当然,您应该能够使用 Maven 以某种方式自动执行此操作,以消除人工步骤,但这对于一次性来说是好的。
我们正在使用 Maven 中央存储库中不存在的第三方库,我们不想将此存档作为工件部署到 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:
我们已经解决了这个问题,但是有点复杂。应用解决方案有很多步骤:
对于 jain-sdp 存档,步骤如下:
1- 使用分类器 "sources" 部署 jain-sdp 源工件,如屏幕截图所示。
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/maven/javax.sdp/jain-sdp/pom.属性 META-INF/maven/javax.sdp/jain-sdp/pom.xml
请注意,这些文件应该添加到 jain-sdp.jar,而不是 jain-sdp-sources.jar
5- 通过 UI
上传 jain-sdp.jar 到 Artifactory我认为这些步骤应该手动完成。我能想到的没有其他方法可以解决这个问题。应该手动将 sourceDirectories 包含到 pom 文件和存档中。
将源文件添加到 jar 中,观察与class 文件内容相同的目录结构。
这意味着您不需要管理另一个工件,也不需要更新您的 pom.xml
执行此添加的最简单步骤是在 CLI 上:切换到您的源目录和 "update" 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
应该在同一树中显示 class 个文件和源文件。
...
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 中的这些源文件,并在打开相关 class 文件时显示它们。我假设其他功能齐全的 IDE 也会。
当然,您应该能够使用 Maven 以某种方式自动执行此操作,以消除人工步骤,但这对于一次性来说是好的。