在我的android项目中,我使用MAVEN进行暂存和生产构建。这两者之间的唯一区别是我使用不同的URL来消费其余服务。所以我正在寻找一种方法,我可以使用MAVEN来制作两个版本。我正在考虑将我的代码的其余URL部分移动到一个单独的Java jar中,并将此jar声明为我项目中的依赖项。
所以我将有两个罐子。一个将我的应用程序指向生产,一个将我的应用程序指向一个暂存URL。现在,当我说mvn clean install -staging or mvn clean isntall -production
我怎样才能做到这一点。任何帮助将不胜感激。
答案 0 :(得分:1)
看看Maven Profiles。配置文件在激活时会修改您的pom的特定区域 - 因此您可以通过修改<dependencies>
元素来包含或排除依赖关系。您可以在命令行上轻松指定在构建时使用的配置文件,如下所示:
mvn package -Pstaging
因此,例如,如果您想使用,可以像这样添加一些配置文件到您的pom:
<project>
...
<profiles>
<profile>
<name>staging</name>
<properties>
<rest.url>http://staging.rest/url</rest.url>
</properties>
</profile>
<profile>
<name>production</name>
<properties>
<rest.url>http://production.rest/url</rest.url>
</properties>
</profile>
<profiles>
</project>
然后,当您准备好时,可以使用适当的配置文件运行构建:
mvn clean install -Pstaging
maven属性将由个人资料设置。您可以在pom中的其他位置使用此属性,例如,您可以过滤属性文件以包含rest.url
值,并让应用程序在运行时读取它。查看Maven Resources Plugin,它允许您定义应用程序将使用的资源,并根据您的pom中的属性对其进行过滤。
答案 1 :(得分:1)
我不建议使用配置文件来更改构建工件的内容。一旦您的工件构建并部署到您的存储库,您将无法区分它是否为您的登台或生产环境构建(除非您查看工件)。
因此,作为一个简单的解决方案,我会为暂存(例如pom.xml
)制作第二个pom-staging.xml
,并为工件提供专用的Maven坐标,例如,
<groupId>foo.bar.staging</groupId>
<artifactId>my-app</artifactId>
您可以更改此pom中暂存环境的所有内容(例如依赖项),并使用
构建专用的statging应用程序mvn -f pom-staging.xml install