Я пытаюсь создать исполняемый файл jar для моего проекта Maven-TestNG.Моя конечная цель - выполнить код на любой машине только с помощью jar-файлов.Мой план состоит в том, чтобы поместить все требуемые файлы JAR-файлов / зависимостей в папку и передать папку как -classpath.
Поскольку исполняемому файлу JAR нужен класс Main, я создал основной класс и выполнил поставленные задачи с помощью * 1003.* InvocationRequest .Как часть моей цели, мой TestNG.xml будет выполнен.
InvocationRequest request = new DefaultInvocationRequest();
File file = new File("pom.xml");
File fileWithPath = new File(file.getAbsolutePath());
request.setPomFile(new File(fileWithPath));
request.setGoals(Collections.singletonList("clean verify"));
DefaultInvoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File(System.getenv("M2_HOME")));
try {
invoker.execute(request);
} catch (MavenInvocationException e) {
e.printStackTrace();
}
Приведенный выше код работает нормально, когда я выполняю его из Eclipse.
Но как только я выполнил упаковку и попытался выполнить Java -cp lib/* com.test.package.runner.InvokerClass
из C:\TestProject
с помощью команды, он показывает, что C:\TestProject\lib\pom.xml
не найден.Я понял, что pom.xml не будет представлен на уровне jar. Вместо этого он будет находиться под C:\TestProject\lib\TestProject.jar!\META-INF\maven\com.test.package\TestProject\pom.xml
.
Так как я могу получить путь к pom.xml из папки META-INF во время выполнения?
Я попытался установить путь к pom.xml по-разному, как показано ниже.Но ничего не получалось.Любые предложения, пожалуйста?
В большинстве случаев я получал исключение nullpointer, поскольку он не мог найти путь.
URL path = InvokerClass.class.getClass().getClassLoader().getResource("pom.xml");
URL path = InvokerClass.class.getClass().getClassLoader().getResource("./pom.xml");
URL path = InvokerClass.class.getClass().getClassLoader().getResource("META-INF/maven/com.adp.aca.test/aca-test-regression/pom.xml");
URL path = InvokerClass.class.getClass().getClassLoader().getResource("./META-INF/maven/com.adp.aca.test/aca-test-regression/pom.xml");