programing

메이븐의 종속성 jar 파일 목록

bestcode 2022. 9. 22. 00:28
반응형

메이븐의 종속성 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 번들의 MF 파일입니다.(질문에 답변하기 위해 이 비트를 이해할 필요는 없습니다.)

명확히 하기 위해:문제는 매니페스트 헤더를 MANIFIST에 쓰는 방법에 관한 것이 아닙니다.항아리 내의 MF 파일(구글하기 쉬운 파일).기입하고 싶은 데이터, 즉 위의 리스트를 입수하는 방법에 대해 묻고 있습니다.

이 명령어는 maven 프로젝트의 종속성 트리를 생성합니다.

$ mvn dependency:tree

결과는 마음에 드실 겁니다:-)

사실, 단지 마지막 항아리 목록을 위해, 간단히

mvn dependency:list

이는 의존관계보다 훨씬 단순합니다.트리는 상세 트랜시티브 트리와 충돌 해결(상세 설명 포함)을 표시하기 때문에 최종 목록을 얻기에는 무리한 처리입니다.

추가 파라미터에 대한 문서입니다.

쉼표와 공백이 없으면 정확하게 출력을 얻을 수 없습니다.명령줄과 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.pileSeparator="@" -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

종속성 트리를 필터링하는 방법(Windows cmd, MacOS 및 Linux 쉘에서 작동):

$ mvn dependency:tree -Dincludes=javax.persistence:*

Maven way(Windows PowerShell):

$ mvn dependency:tree '-Dincludes=javax.persistence:*'

아파치 펠릭스 프로젝트 봤어요?원하는 기능을 수행하는 번들 플러그인을 포함하여 모든 플러그인이 뒤죽박죽으로 되어 있습니다.

, ㅇㅇㅇ, ㅇㅇ, ㅇㅇ, ㅇㅇ, ㅇㅇ, ㅇ, ㅇ,<addClasspath>를 달다<manifestFile>manifest에 클래스 수

<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>

여기서 뭔가 부족한 점이 있을 수 있지만, 이미 복사 의존성을 사용했기 때문에 실제로 원하는 것은 지정된 디렉토리에 있는 파일 목록일 뿐입니다.

개미는 셸 스크립트와 마찬가지로 문제 없이 이 작업을 수행할 수 있습니다.

Maven은 당신의 매니페스트에 classpath를 자동으로 구축할 수 있습니다.http://maven.apache.org/guides/mini/guide-manifest.html

Maven 아카이브 플러그인의 구성입니다.

기존 응답에 노치를 추가하기 위해 현재 maven-dependency-plugin에서는 파라미터로 속성에 클래스 경로를 저장할 수 있습니다.

피리를 불기 위한 .mvn dependency:list:

mvn dependency:list | awk -f mvnfmt.awk

하면 돼요.| sort 또는 ""를 선택합니다.| tr '\n' ':'클래스 패스로 포맷합니다.

mvnfmt.awk 말합니다

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

반응형