подстрока переменной в pom.xml - PullRequest
0 голосов
/ 09 мая 2018

Возможно ли (и как) подставить переменную в pom.xml или свойства, которые используют эту переменную?

Мой сценарий:

У меня есть приложение Swing, которое показывает своего рода версию в нижнем колонтитуле. Эта версия читается из файла свойств. Файл свойств имеет ссылку только на переменную maven, как:

version=${git.branch}

В моем pom.xml есть плагин, который ищет имя ветви и записывает его в переменную "git.branch".

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <version>2.2.2</version>
            <configuration>
                <dotGitDirectory>${project.basedir}/../.git</dotGitDirectory>
                <injectAllReactorProjects>true</injectAllReactorProjects>
            </configuration>
            <executions>
                <execution>
                    <id>get-the-git-infos</id>
                    <goals>
                        <goal>revision</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/version.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>**/version.properties</exclude>
            </excludes>
        </resource>
    </resources>
</build>

Но теперь мы используем префикс для имен веток, и этот префикс не должен развертываться вместе с версией приложения.

У меня были такие ветки, как:

v123
v124
v125

Теперь у меня есть такие ветки, как:

b_04_v123
b_04_v124

И я хочу, чтобы maven получил только значение «v124» строки «b_04_v123», префикс фиксированный, всегда как «b_NN _».

ПРИМЕЧАНИЕ. Нет, изменить имена филиалов невозможно, так как другие отделы используют их со скриптами и автоматизацией.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Я решил это внутри java-кода, у меня уже был код, читающий файл свойств, я только добавил туда подстроку. Это не красивое решение Maven, но сработало. Я мог бы сделать это с самого начала. Но если бы кто-то мог сказать, как я могу вставить переменную в свой файл pom.xml, это было бы здорово, хотя мне это больше не нужно (или с той же срочностью), мне все равно любопытно.

0 голосов
/ 09 мая 2018

вы можете использовать org.codehaus.groovy.maven плагин:

   <plugin>
        <groupId>org.codehaus.groovy.maven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>                  
System.setProperty("version2","${version}".replace('b_04_', ''))
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>

и теперь вы можете использовать версию2:

version=${version2}

это пример в GitHub

...