我已付出另一個項目,並將其上傳到我自己的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中都沒有。
問題
我該如何解決這樣只有我的分叉項目拉?通過a)重命名爲
com.badlogicgames.gdx:gdx
,因此它首先搜索我的Maven倉庫;或者b)排除依賴關係com.badlogicgames.gdx:gdx
。[小問題]是否可以設置一個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>
的確如此,儘管我使用了不在那裏的快照版本。我已經下移mavenCentral,它仍然從該項目中獲取。 有一點值得注意。我只分叉gdx(而不是gdx-box2d)。另外gdx-sqlite(不可見)是另一個依賴於gdx的項目。我將測試移除gdx-box2d並查看哪個版本的gdx-sqlite拉。如果它拉的原始,這意味着我必須分叉每個項目,使用gdx(我使用)。 – Senth 2015-03-03 14:34:07
由於gdx-box2d和gdx都是較大的'gdx'項目的模塊,gdx-box2d會拉取原始的gdx。這意味着我'只'必須部署所有主要的gdx模塊。 I.e.分叉時,我必須使用相同的groupId,因爲如果我使用依賴於gdx的人員的獨立項目,他們將拉取原始文件而不是我的版本。 – Senth 2015-03-03 14:45:10