2013-03-15 47 views
0

我的項目使用的代碼可以在Android或Java上運行。爲了抽象出非常見的部分,我們使用相同的API,但特定於平臺的實現 - 一個用於Android,另一個用於Java。配置文件不是工件名稱的一部分

事情是這樣的:

common/src/main/java/... 
droid/src/main/java/... 
POJ/src/main/java/... 

共同會對要麼 droid.jar或POJ.jar的依賴。

我正在使用配置文件執行一個android build(指定droid.jar依賴項),後面跟着一個java build(指定POJ.jar依賴項)。這會導致衝突,因爲它們都會創建具有相同名稱但內容不同的工件。

我要求maven向後彎曲嗎?有沒有更好的方法來實現這一目標?

謝謝!

+0

你想在一個構建中構建兩個common.jars? – Kent 2013-03-15 02:00:39

+0

從某種意義上說,是的。只要文物不相互衝突,調用構建兩次就不成問題。 – 2013-03-15 02:02:47

回答

0

我想你使用一些插件來構建你的jar/war/.... 在maven配置文件中,你不僅可以聲明依賴項,還可以聲明插件配置。

它看起來像:

<profile> 
    <id>whatever</id> 
    <build> 
    <plugins> 
     <groupId/> 
     <artifactId/> 
     <version/> 
     <configuration> 
     ... 
     </configuration> 
    </plugins> 
    </build> 
</profile> 

例如,如果你用maven-JAR的插件。您可以定義finalname,以從不同的配置文件獲取唯一的名稱。

但是,要小心如果您使用一個配置文件構建,那麼如果您mvn -Panother clean package它將刪除另一個配置文件。

另一種方法是創建具有不同依賴關係的子模塊。

+0

那麼,最終名稱並不是很有用,因爲它不會存儲在回購中。子模塊的想法很有趣,但我最終會創建指向相同源代碼的空模塊,並且必須破解源代碼位置。 – 2013-03-15 02:26:52

+0

我還沒有嘗試重載配置文件中的artifactId。這是一個好主意,也許是唯一的解決方案。謝謝! – 2013-03-15 02:27:42

相關問題