Maven 2 递归定义maven属性

Maven 2 递归定义maven属性,maven-2,Maven 2,我们正试图重新考虑我们模块化的maven建筑。我们引入了一个属性部署_ENV,它可能是“prod”、“dev”、“staging”等等。我们当时的心态是,我们可以定义,比如: dev.jdbc.username = yoyodyne dev.jdbc.password = 0verthruster staging.jdb.username = cavaliers staging.jdbc.password = 8thdim 这似乎是在为maven插件的配置提供信息。例如,DBUnit需要一个用

我们正试图重新考虑我们模块化的maven建筑。我们引入了一个属性部署_ENV,它可能是“prod”、“dev”、“staging”等等。我们当时的心态是,我们可以定义,比如:

dev.jdbc.username = yoyodyne
dev.jdbc.password = 0verthruster
staging.jdb.username = cavaliers
staging.jdbc.password = 8thdim
这似乎是在为maven插件的配置提供信息。例如,DBUnit需要一个用户名。从语义上讲,我们想到的解决方案如下所示,但是maven不允许以这种方式进行递归属性定义:

<configuration>
    <username>${${DEPLOYMENT_ENV}.jdbc.username}</username>
</configuration>

${${DEPLOYMENT\u ENV}.jdbc.username}

有没有关于参数化maven构建的想法,比如我们可以保留庞大的属性定义中心列表?

您可以简单地使用相同的属性,而不是使用不同的属性名称,但在不同的配置文件中声明它们,无论是在pom.xml中还是在settings.xml中。您能更具体地描述一下您遇到的问题吗?你有什么错误吗

我已经在我的
pom.xml
中的一个
antrun
插件
中使用了这个递归属性定义,它工作得很好:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            ...
                            <ftp server="${my-ftp-url}" userid="${ftp-${appli}-${env}-username}" password="${ftp-${appli}-${env}-password}"
                                remotedir="${remoteDir}/sources" passive="yes">
                                <fileset dir="../target/">
                                    <include name="*.tar.gz"/>
                                </fileset>
                            </ftp>
                            ...

我们以前就这样做过。我们基于概要文件的方法已经失控,不同的概要文件定义了非常不同的插件。我们完全同意,我们可以独立地解决意大利面构建配置文件的问题,使用不同的配置文件声明不同的变量。我们正试图尽可能地取消与配置文件无关的配置,但这可能是一个很好甚至是必要的地方。我建议只使用属性创建多个配置文件。请注意,您可以同时激活多个配置文件,例如属性+附加插件/gials,或者仅激活带有默认插件的属性。我很确定我已经做过这样的事情,但它位于Antrun插件的
节点中。。。此
位于哪个插件中?你有什么行为?
<build>
    <plugins>
        <!-- Properties loader -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0-alpha-1</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>read-project-properties</goal>
                    </goals>
                    <configuration>
                        <files>
                            <file>${basedir}/${env-properties-file}</file>
                        </files>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...
<profiles>
    <!-- Development -->
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <property>
                <name>env</name>
                <value>dev</value>
            </property>
        </activation>
        <properties>
            <env-properties-file>dev-environment.properties</env-properties-file>
        </properties>
    </profile>

    <!-- Homologation -->
    <profile>
        <id>hom</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <property>
                <name>env</name>
                <value>hom</value>
            </property>
        </activation>
        <properties>
            <env-properties-file>homologation-environment.properties</env-properties-file>
        </properties>
    </profile>
    ...