Я строю свой проект с помощью 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?
Спасибо вам за помощь!