Пользовательские свойства в Maven на основе переключателя командной строки - PullRequest
1 голос
/ 12 октября 2010

[уменьшено для простоты]

У меня есть проект с несколькими модулями Maven Модуль имеет файлы свойств, содержимое которых фильтруется во время сборки Существуют наборы свойств, которые можно сгруппировать В данной сборке существует только одна группа свойств Все группы имеют одинаковые свойства, только их значения изменяются между группами
parent
+- pom.xml
+- foo
   +- src/main/resources/test.properties

Я установил профили в родительском pom.xml. Каждый профиль активируется аргументом командной строки и устанавливает значения для свойств в этой группе.

mvn clean compile -Dgroup1=true

Проблема в том, что мне приходится дублировать весь профиль между группами. Я хотел бы только определить <properties> для каждой из групп и использовать один профиль для контроля порядка сборки, плагинов и прочего.

Кто-нибудь знает, можно ли это сделать?

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Для меня это звучит так, как будто вы хотите просто создать отдельный набор файлов свойств для каждого профиля, примерно так:

<profiles>
    <profile>
        <id>group1</id>
        <build>
            <filters>
                <filter>src/main/resources/propertyfile1.txt</filter>
                <filter>src/main/resources/propertyfile2.txt</filter>
            </filters>
        </build>
    </profile>
    <profile>
        <id>group2</id>
        <build>
            <filters>
                <filter>src/main/resources/propertyfile3.txt</filter>
                <filter>src/main/resources/propertyfile4.txt</filter>
            </filters>
        </build>
    </profile>
</profiles>

Теперь каждый профиль дает вам разные значения при фильтрации ресурсов.


Если вам также нужны значения в pom, вам придется выполнить дополнительную обработку, возможно, с помощью плагина maven properties или чего-то подобного.Поместите смысл определения плагина в основной элемент сборки:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>read-project-properties</goal>
            </goals>
        </execution>
    </executions>
</plugin>

И настройте загруженные файлы в отдельных профилях:

<profile>
    <id>group1</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <configuration>
                    <files>
                        <file>src/main/resources/propertyfile1.txt</file>
                        <file>src/main/resources/propertyfile2.txt</file>
                    </files>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>
0 голосов
/ 12 октября 2010

Я думаю, что это может быть достигнуто с помощью <pluginManagement>. Вы бы объявили порядок сборки, плагины и другие вещи в родительском pom в разделе <pluginManagement>, а затем в каждом дочернем элементе вы должны указать <plugin> вместе с соответствующим properties.

...