2015-01-06 69 views
1

我們正在使用Maven Central Repository中不存在的第三方庫,我們不想將此存檔作爲工件部署到Artifactory。我們正在嘗試通過Artifactory用戶界面來做到這一點,並且我們成功部署了archive.jar和archive-sources.jar。當我們通過Gradle將這個依賴添加到我們的build.gradle腳本時,就會出現問題。 Archive.jar是從我們的倉庫中提取的,但是不會提取archive-sources.jar。我們正在使用Eclipse進行開發,您可以通過截圖查看問題。通過UI部署Sources.jar存檔爲Artifactory

enter image description here

我們嘗試了幾件事情,包括在Artifactory的UI定義分類,編輯與POM POM Artifactory的編輯,出版POM文件手動並沒有什麼工作。無論我們做什麼,我們都無法得到這個檔案的來源。任何形式的幫助都會節省很多時間和精力。謝謝!

截圖Artifactory的用戶界面:

enter image description here

+0

如何來源罐子看起來就像在Artifactory的?你能粘貼樹(或簡單)瀏覽器的截圖嗎? – JBaruch

+0

您是否檢查Artifactory請求日誌中源jar的gradle請求? –

+0

@Jaruaru我添加了截圖。如果您需要它們,我可以提供更多文件。 – leventunver

回答

0

我們已經解決了這個問題,但它是一個有點複雜。有許多步驟以應用解決方案:

在耆那教-SDP歸檔的情況下,這裏的步驟:

1-部署耆那教-SDP來源神器與分類「來源」,因爲它是在顯示屏幕截圖。

2-手動上傳耆那教,sdp.pom文件,包括 「sourceDirectory」 標籤:

<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.properties META-INF/maven/javax.sdp/jain-sdp/pom.xml

注意,這些文件應該被添加到耆那教,sdp.jar,不JAIN-SDP-sources.jar

5上傳耆那教,sdp.jar通過UI

的Artifactory的,我認爲,這些步驟應該手動完成。沒有其他辦法可以解決我能想到的這個問題。應手動包含sourceDirectories以手動執行pom文件和存檔。

0

將您的源文件添加到您的jar中,觀察與類文件內容相同的目錄結構。

這意味着你沒有需要管理其他神器,並不需要更新你的pom.xml

最簡單的步驟來執行這除了是對CLI:切換到你的源代碼目錄和「更新」罐子裏。用這個特定的當前工作目錄來執行它,它將保留正確的相關文件名。

例如,我的目錄結構:

~/project/src/com/mycompany 
~/project/target 

,並建立了一個罐子到〜/項目/目標existing.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莫名其妙地自動執行此,取出人一步,但是這是很好的一個一次性的。