0

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

所以我会有两个罐子。一个将我的应用程序指向生产环境,一个将我的应用程序指向一个暂存 URL。现在,当我说类似的话时,我只需要根据参数包含其中一个mvn clean install -staging or mvn clean isntall -production

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

4

2 回答 2

1

看看Maven 配置文件。配置文件在激活时会修改 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.xml 中的属性过滤它们。

于 2013-07-19T09:09:47.517 回答
1

我不建议使用配置文件来更改构建工件的内容。一旦您的工件被构建并部署到您的存储库,您将无法区分它是为您的暂存环境还是生产环境构建的(除非您查看工件内部)。

因此,作为一个简单的解决方案,我会pom.xml为暂存(例如pom-staging.xml)做第二个,并为工件提供专用的 Maven 坐标,例如,

<groupId>foo.bar.staging</groupId>
<artifactId>my-app</artifactId>

您可以更改此 pom 中登台环境的所有不同之处(例如依赖项)并构建一个专用的登台应用程序

mvn -f pom-staging.xml install
于 2013-07-19T11:15:57.597 回答