Maven과 함께 배치 된 아티팩트에서 주요 클래스를 실행합니다
-
11-12-2019 - |
문제
나는 그것을 얻지 못한다. MAVEN EXEC Plugin을 사용하여 Project의 일부 클래스를 올 Y 른 ClassPath, -d Defines 및 -javaagent로 실행할 수 있도록 내 pom.xml을 설정했습니다. 그래서 쉘에서 ./target/classes 등에 구축 된 클래스가 있습니다. 를 사용하여 main () 메소드를 실행할 수 있습니다.
mvn exec:java -Dexec:mainClass=classWithAMainMethod
.
지금까지 모두 좋은 것입니다.
이제는 내 프로젝트 (JAR Artifact)를 발송하고 싶습니다. 그리고 정확한 인수 등의 클래스를 실행하기 위해 pom.xml에 넣은 구성을 여전히 사용할 수 있기를 원합니다. 어떻게해야합니까? 그것? 를 유지하는 방법이 있습니까?
mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod
.
내가 가진 모든 것이 MyARTIFACT.jar (또는 MyARTifact.jar가있는 Maven 저장소가있는 Maven 저장소)입니까 ??
다음을 시도했습니다.
-
종속성으로 항아리를 가져와 목표를 얻고 압축을 풉니 다. 나는 그것으로 아무 것도 할 수 없다 pom.xml이 아티팩트 항아리의 Meta-INF / Maven에서 끝나는 것처럼 보입니다. 그것을 사용하는 방법이 있습니까?
-
더미 POM을 만들고 내 프로젝트를 단일 프로젝트에서 단일 종속성으로 실행하고자하는 곳에서는 이슈를 작성합니다. 그런 다음 EXEC : Java를 사용하여 주 클래스를 실행하지만 DoSEN은 내 프로젝트 POM에서 구성을 사용하지 않습니다.
감사합니다.
해결책 2
AppAssembler 플러그인은 저에게 매우 잘 작동했습니다.프로젝트의 POM에서 EXEC PLUGIN CONFIG를 빌드 섹션에서 다음과 같이 대체했습니다.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
<extraJvmArguments>
-Djava.rmi.server.hostname=localhost
-javaagent:${spring.javaagent.jar}
</extraJvmArguments>
<programs>
<program>
<name>foo1</name>
<mainClass>net.foor.FooMain</mainClass>
</program>
...
</configuration>
</plugin>
.
Eclipse에서는 대상 / appassembler / bin 에서 결과 스크립트를 실행하는 외부 도구 실행기를 만들었습니다.
컴퓨터에서 배포하려는 (내 아티팩트 + 종속성이 설치 / 배포 된 내부 Maven 저장소에 액세스 할 수 있음)
- 는 wget 또는 mvn 의존성을 사용합니다. 을 얻으려면
- POM을 추출하십시오. unzip -j artifact.jar * / pom.xml *
- run mvn appassembler : 어셈블 - 디렉토리 embledirectory=.
- artifact.jar를 ./lib 디렉토리 로 이동하십시오.
- ./bin 에서 생성 된 쉘 스크립트에 대한 실행 권한 설정
다른 팁
onejar 와 같은 것을 사용하여 사용해 보셨습니까?
당신이 찾고있는 것을 좋아하는 것처럼 들립니다.