1

我创建了一个 Android Maven 项目,正如本文所述(链接到文章)。我使用最后一个原型:android-release。

所以一切正常,除了我想发布一个版本时,我不知道如何传递证书属性。我创建了一个包含以下内容的 settings.xml:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
    <profile>
        <id>android-debug</id>
        <properties>
            <sign.keystore>/Users/me/.android/debug.keystore</sign.keystore>
            <sign.alias>androiddebugkey</sign.alias>
            <sign.storepass>android</sign.storepass>
            <sign.keypass>android</sign.keypass>
        </properties>
    </profile>

    <profile>
        <id>android-release</id>
        <properties>
            <sign.keystore>/Users/me/myKeystore.keystore</sign.keystore>
            <sign.alias>myAlias</sign.alias>
            <sign.storepass><![CDATA[myPassword]]></sign.storepass>
            <sign.keypass><![CDATA[myPassword]]></sign.keypass>
        </properties>
    </profile>

</profiles>

然后我运行:

mvn -s setttings.xml clean release:prepare release:perform -Pandroid-release

但我一直忽略 android-release 配置文件中定义的值。

任何想法如何让这个工作?当我刚刚运行时:

mvn -s setttings.xml clean install -Pandroid-release,release

它构建一个 apk 并使用正确的证书对其进行签名。所以也许它只是 maven-enforcer-plugin,它无法从 settings.xml 中读取属性?

4

1 回答 1

2

mvn -s setttings.xml 清理发布:准备发布:执行 -Pandroid-release

我不知道为什么它一直忽略 android-release 配置文件中定义的值。

但是,如果您使用 maven-release-plugin,我们用来实现您想要的正常方法是将以下设置添加到您要在发布阶段触发的配置文件中:

<profile>
    <id>android-release</id>
    <properties>
        <sign.keystore>/Users/me/myKeystore.keystore</sign.keystore>
        <sign.alias>myAlias</sign.alias>
        <sign.storepass><![CDATA[myPassword]]></sign.storepass>
        <sign.keypass><![CDATA[myPassword]]></sign.keypass>
    </properties>
    <!-- via this activation the profile is automatically used when the release 
        is done with the maven release plugin -->
    <activation>
        <property>
            <name>performRelease</name>
            <value>true</value>
        </property>
    </activation>
</profile>

所以现在如果你这样做了mvn -s setttings.xml clean release:prepare release:perform,maven-release-plugin 会自动选择profile android-release.

请注意,配置文件在发布阶段会自动激活,如果不涉及 maven-release-plugin,您仍然可以使用经典方式mvn -s setttings.xml clean install -Pandroid-release使构建过程使用特定的profile android-release.

查看maven-release-plugin 文档了解更多详细信息。

于 2012-06-06T21:56:00.000 回答