Maven의 종속성 jar 파일 목록
Maven 2를 사용하여 jar 종속성을 파일 이름으로 나열 할 수있는 방법이 있습니까?
mvn dependency:build-classpath
jar 파일을 나열 할 수 있지만 여기에는 내 로컬 저장소의 해당 위치에 대한 전체 경로가 포함됩니다. 내가 필요한 것은 본질적으로 파일 이름 목록 (또는 복사 종속성 목표가 복사 한 파일 이름)입니다.
그래서 내가 필요한 목록은 다음과 같을 것입니다.
activation-1.1.jar,antlr-2.7.6.jar,aopalliance-1.0.jar etc...
이상적으로는 maven 속성이지만 build-classpath와 같은 파일이 생성 할 수 있다고 생각합니다.
내가 달성하려는 Bundle-ClassPath
것은 OSGi 번들에 대해 수동으로 유지 관리되는 MANIFEST.MF 파일에를 쓰는 것 입니다. (질문에 답하기 위해이 부분을 이해할 필요는 없습니다.)
명확히하기 위해 : 문제는 jar의 MANIFEST.MF 파일에 매니페스트 헤더를 작성하는 방법에 관한 것이 아닙니다 (쉽게 googleble). 내가 쓰고 싶은 데이터, 즉 위에 표시된 목록을 얻는 방법에 대해 묻습니다.
이 명령은 Maven 프로젝트의 종속성 트리를 생성합니다.
$ mvn dependency:tree
나는 당신이 결과를 좋아할 것이라고 확신합니다 :-)
내가 말할 수있는 한, 쉼표와 공백없이 정확하게 출력을 얻을 수는 없습니다. 명령 줄과 pom.xml 파일을 통해 maven-dependency-plugin 또는 CLI를 사용하면 공백이나 ''(빈 문자열)을 pathSeparator
또는 fileSeparator
. 따라서 타협점에 도달해야 할 수도 있습니다. 당신은 할 수 있습니다
mvn 종속성 : build-classpath -Dmdep.pathSeparator = ":"-Dmdep.prefix = ''-Dmdep.fileSeparator = ":"-Dmdep.outputFile = classpath
그러나 이렇게하면 전체 목록이 표시되고으로 구분되어 '::'
표시 ','
되지만 작동합니다. 실행하는 경우 :
mvn 종속성 : build-classpath -Dmdep.pathSeparator = "@ REPLACEWITHCOMMA"-Dmdep.prefix = ''-Dmdep.fileSeparator = "@"-Dmdep.outputFile = classpath
와 받는이를 부착 generate-resources
단계 및 이후의 정확한 특성 설정하여 자원 것을 필터 process-resources
수명주기의 단계, 당신은 해야 그냥 쉼표를 얻을 수.
다음에서 전체 옵션 목록을 볼 수 있습니다. http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html
요청하는 명령은 다음과 같습니다.
$ mvn dependency:tree
대규모 프로젝트의 경우 많은 텍스트를 출력 할 수 있습니다. 종속성 트리에 특정 종속성이 포함되어 있는지 확인하려는 것으로 가정하므로 전체 목록이 필요하지 않습니다.
Windows에서 출력을 필터링하는 방법은 다음과 같습니다.
$ mvn dependency:tree | findstr javax.persistence
Linux에서 수행하는 방법은 다음과 같습니다.
$ mvn dependency:tree | grep javax.persistence
종속성 트리 를 필터링하는 Maven 방법 (Windows cmd, MacOS 및 Linux 셸에서 작동) :
$ mvn dependency:tree -Dincludes=javax.persistence:*
Maven 방식 (Windows PowerShell) :
$ mvn dependency:tree '-Dincludes=javax.persistence:*'
실제로 항아리의 최종 목록을 보려면 간단히
mvn dependency:list
세부적인 전이 트리와 충돌 해결 (상세 포함)을 보여주기 때문에 단순히 최종 목록을 얻는 데 과잉 인 dependency : tree보다 훨씬 더 간단합니다.
Apache Felix 프로젝트를 보셨습니까 ? 원하는 작업을 수행해야하는 번들 플러그인 을 포함하여 플러그인 전체가 엉망입니다 .
또한 <addClasspath>
태그 를 사용해 보셨습니까 <manifestFile>
? 클래스 경로를 매니페스트에 병합하는 원하는 효과가 있어야합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<addClasspath>true</addClasspath>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
...
</plugin>
여기에 뭔가 빠졌을 수 있지만 이미 복사 종속성을 사용했기 때문에 실제로 원하는 것은 지정된 디렉토리의 파일 목록 인 것처럼 들립니다.
Ant는 쉘 스크립트처럼 문제없이이를 수행 할 수 있습니다.
Maven은 매니페스트에서 클래스 경로를 자동으로 빌드 할 수 있습니다. http://maven.apache.org/guides/mini/guide-manifest.html
Maven 아카이브 플러그인의 구성입니다.
To add a notch to the existing answers, the current maven-dependency-plugin allows saving the classpath to a property with the outputProperty
parameter.
Here is an awk script to pipe mvn dependency:list
:
mvn dependency:list | awk -f mvnfmt.awk
You can | sort
if you want to sort by name, or | tr '\n' ':'
to format it to a classpath.
mvnfmt.awk
is:
BEGIN {
found = 0
}
/The following files have been resolved/ {
found = 1
next
}
/^\[INFO\] \$/ {
print "Empty " found
if (found != 0) found = 0
}
{
if (!found) next
n = split($0, a, " ")
if (n != 2) {
found = 0
next
}
split(a[2], a, ":")
print a[2] "-" a[4] "." a[3]
}
참고URL : https://stackoverflow.com/questions/278596/list-of-dependency-jar-files-in-maven
'programing' 카테고리의 다른 글
개인 키를로드 할 수 없습니다. (0) | 2020.12.05 |
---|---|
Android Studio에서 이전 캐럿 위치로 이동하는 방법 (0) | 2020.12.04 |
3D 포인트 클라우드에서 표면 재구성을위한 강력한 알고리즘? (0) | 2020.12.04 |
C #을 사용하여 어떤 프로세스가 파일을 잠 갔는지 어떻게 알 수 있습니까? (0) | 2020.12.04 |
TEXT 또는 VARCHAR을 사용하는 것이 더 나은 DATATYPE은 무엇입니까? (0) | 2020.12.04 |