2015-03-03 28 views
0

說明搖籃/ Maven項目叉提供原神器(只下載叉)

我已付出另一個項目,並將其上傳到我自己的Maven倉庫。然而,依賴關係圖也拉動了原始項目,這意味着我有兩個版本的項目。編譯在命令行中可以正常工作,但不能在eclipse中編譯,因爲它先讀取原始項目的jar文件,然後跳過我的分支項目。

依賴圖

+--- com.spiddekauga.gdx:gdx-spiddekauga (fork) 
+--- com.badlogicgames.gdx:gdx-box2d 
| \--- com.badlogicgames.gdx:gdx (original) 

我已經試過

首先我嘗試使用的com.badlogicgames.gdx:gdx原來的名稱,但該項目從原來的Maven倉庫即使下載礦代替我的Maven倉庫在之前列出。

的build.gradle

allprojects { 
    ... 
    repositories { 
     maven { url "http://maven.MY-DOMAIN.org/" } 
     mavenCentral() 
     maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
     maven { url "https://oss.sonatype.org/content/repositories/releases/" } 
    } 
    ... 
} 

我尋找另一件事是讓com.spiddekauga.gdx:gdx-spiddekauga提供com.badlogicgames.gdx:gdx,使其不必下載,但我還沒有找到一種方法做這在Gradle或Maven中都沒有。

問題

  1. 我該如何解決這樣只有我的分叉項目拉?通過a)重命名爲com.badlogicgames.gdx:gdx,因此它首先搜索我的Maven倉庫;或者b)排除依賴關係com.badlogicgames.gdx:gdx

  2. [小問題]是否可以設置一個maven項目提供另一個工件?例如。像這樣:

的pom.xml

<project> 
    <groupId>com.spiddekauga.gdx</groupId> 
    <artifactId>gdx-spiddekauga</artifactId> 

    <provides> 
     <project> 
      <groupId>com.badlogicgames.gdx</groupId> 
      <artifactId>gdx</gdx> 
     </project> 
    </provides> 
</project> 

回答

0

建立該項目不更改pom或gradle這個文件的項目座標(groupIdprojectIdversion)。您需要搜索並替換所有這些才能正常工作。

另外,您所指的依賴關係可在mavenCentral中找到,它是存儲庫列表中的第一個。

+0

的確如此,儘管我使用了不在那裏的快照版本。我已經下移mavenCentral,它仍然從該項目中獲取。 有一點值得注意。我只分叉gdx(而不是gdx-box2d)。另外gdx-sqlite(不可見)是另一個依賴於gdx的項目。我將測試移除gdx-box2d並查看哪個版本的gdx-sqlite拉。如果它拉的原始,這意味着我必須分叉每個項目,使用gdx(我使用)。 – Senth 2015-03-03 14:34:07

+0

由於gdx-box2d和gdx都是較大的'gdx'項目的模塊,gdx-box2d會拉取原始的gdx。這意味着我'只'必須部署所有主要的gdx模塊。 I.e.分叉時,我必須使用相同的groupId,因爲如果我使用依賴於gdx的人員的獨立項目,他們將拉取原始文件而不是我的版本。 – Senth 2015-03-03 14:45:10