使用MAVEN进行分段和生产构建

时间:2013-07-19 07:13:45

标签: android maven

在我的android项目中,我使用MAVEN进行暂存和生产构建。这两者之间的唯一区别是我使用不同的URL来消费其余服务。所以我正在寻找一种方法,我可以使用MAVEN来制作两个版本。我正在考虑将我的代码的其余URL部分移动到一个单独的Java jar中,并将此jar声明为我项目中的依赖项。

所以我将有两个罐子。一个将我的应用程序指向生产,一个将我的应用程序指向一个暂存URL。现在,当我说mvn clean install -staging or mvn clean isntall -production

之类的东西时,我需要仅根据参数包含其中一个

我怎样才能做到这一点。任何帮助将不胜感激。

2 个答案:

答案 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