Как передать переменную окружения из exe c -maven плагина java выполнения обратно в maven? - PullRequest
0 голосов
/ 17 апреля 2020

Я строю свой проект с помощью Maven и мне нужно прочитать файл во время процесса сборки. Этот файл содержит строку версии компонента, который я упаковываю в приложение. Эта строка версии должна быть входным параметром для другого выполнения maven-exe c.

Поэтому я использую подключаемый модуль exe c -maven и класс java для чтения этого файла. Для целей тестирования класс ничего не делает, кроме этого:

public class ReadVersionDuringBuild {
    public static void main(String... args) throws Exception {
        System.setProperty("MYVERSION", "test");
    }
}

Maven вызывает все следующим образом:

<execution>
    <id>read_version</id>
    <phase>package</phase>
    <goals>
        <goal>java</goal>
    </goals>
    <configuration>
        <mainClass>com.my.package.ReadVersionDuringBuild</mainClass> <!-- sets MYVERSION via System.setProperty() -->
        <arguments>${pathToFile}</arguments>
    </configuration>
</execution>
<execution>
    <id>create-installer-executable</id>
    <phase>package</phase>
    <goals>
        <goal>exec</goal>
    </goals>
    <configuration>
        <executable>${someExecutableWhichNeedsTheVersionInformation}</executable>
        <commandlineArgs>
            /DVERSION="${env.MYVERSION}"
            /DSIGN_TOOL_PATH="${sign_tool_path}"
        </commandlineArgs>

    </configuration>
</execution>

Когда я запускаю это, я вижу, что someExecutableWhichNeedsTheVersionInformation регистрирует версию следующим образом :

Command line defined: "MYVERSION=${env.MYVERSION}"

Но для sign_tool_path он получил правильное значение.

Так как я запускаю класс java для чтения версии файла в той же JVM, что и maven, я думал, что может использовать System.properties как канал связи между классом и maven. Но, кажется, я не могу или я что-то не так делаю?

Или есть другой способ передать возвращаемое значение java exe c обратно в maven?

Спасибо вам за помощь!

...