通过UI将Sources.jar存档部署到Artifactory

时间:2015-01-06 16:53:24

标签: eclipse gradle artifactory

我们正在使用Maven Central Repository中不存在的第三方库,我们不会将此存档作为工件部署到Artifactory。我们正试图通过Artifactory UI来实现这一点,并且我们成功部署了archive.jar和archive-sources.jar。当我们通过Gradle将此依赖项添加到build.gradle脚本时,会出现问题。 Archive.jar是从我们的存储库中获取的,但是不提取archive-sources.jar。我们正在使用Eclipse进行开发,您可以通过屏幕截图查看问题。

enter image description here

我们尝试了一些方法,包括在Artifactory UI中定义分类器,使用Artifactory POM编辑器编辑pom,手动发布pom文件以及什么都不起作用。无论我们做什么,我们都无法获得此档案的来源。任何形式的帮助都可以节省大量的时间和精力。谢谢!

Artifactory UI的屏幕截图:

enter image description here

2 个答案:

答案 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自动化,以取消人性化步骤,但这对于一次性有用。