2013-03-15 68 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

相关问题