Я хочу получить доступ к некоторой информации из pom.xml
для отображения в диалоговом окне Информация. Так я погуглил и нашел этот пост :
public class MavenModelExample {
public static void main(String[] args) throws IOException, XmlPullParserException {
MavenXpp3Reader reader = new MavenXpp3Reader();
Model model = reader.read(new FileReader("pom.xml"));
System.out.println(model.getId());
System.out.println(model.getGroupId());
System.out.println(model.getArtifactId());
System.out.println(model.getVersion());
}
}
Я реализовал это в своем инструменте, добавил
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>3.3.9</version>
</dependency>
моему pom и был счастлив, что все работало как ожидалось, когда я запустил инструмент из корневого каталога проекта с java -jar target\mytool.jar
.
Когда я перехожу в любой другой каталог, например, непосредственно в target
и запустите мой инструмент с помощью java -jar mytool.jar
, я получу:
java.io.FileNotFoundException: pom.xml (The system cannot find the specified file)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:110)
at java.base/java.io.FileReader.<init>(FileReader.java:60)
Что вроде понятно. Как код должен знать, где находится pom.xml
, поскольку это не ресурс. Есть ли способ обойти это?
Тем временем я использую подход из этого потока , чтобы получить версию и идентификатор артефакта.