로 아티팩트를 설치할 수 install:install-file
있지만 아티팩트를 어떻게 다운로드 할 수 있습니까?
예를 들면 다음과 같습니다.
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
로 아티팩트를 설치할 수 install:install-file
있지만 아티팩트를 어떻게 다운로드 할 수 있습니까?
예를 들면 다음과 같습니다.
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
답변:
2.1 버전부터 좋은 목표 를 가진 maven dependency plugin 을 사용할 수 있습니다 dependency:get
. pom이 필요하지 않으며 모든 것이 명령 행에서 발생합니다.
dependency:get
목표 를 찾으려면 버전 2.1을 사용하도록 maven에 명시 적으로 알려야합니다. 즉, 버전을 포함하여 완전한 플러그인 이름을 사용해야합니다.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
업데이트 : 이전 버전의 Maven (2.1 이전)에서는 dependency:get
maven 사본이 지정된 버전의 플러그인을 사용하도록하여 정규화 된 이름과 버전을 사용하지 않고 정상적으로 실행할 수 있습니다.
다음과 같이 수행 할 수 있습니다.
1. 파일 <settings>
요소 내에 다음 줄을 추가 ~/.m2/settings.xml
하십시오.
<usePluginRegistry>true</usePluginRegistry>
2. ~/.m2/plugin-registry.xml
다음 내용으로 파일 을 추가하십시오 .
<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<useVersion>2.1</useVersion>
<rejectedVersions/>
</plugin>
</plugins>
</pluginRegistry>
그러나 이것은 maven 2.1 / 2.2에서 더 이상 작동하지 않는 것 같습니다. 실제로, 플러그인 레지스트리 소개 에 따르면 , 기능은 plugin-registry.xml
(휴대 성을 위해) 재 설계되었으며 플러그인 레지스트리는 현재 Maven 2 내에서 반 휴면 상태 입니다. 그래서 우리는 지금 긴 이름을 사용해야한다고 생각합니다 (pom없이 플러그인을 사용할 때 뒤에 아이디어입니다 dependency:get
).
:jar:sources
받는 유물 을 참조 stackoverflow.com/a/31109185/537554
mvn dependency:get -Dartifact=group-id:artefact-id:version
Maven Dependency Plugin 최신 버전 (2.8)을 사용 하면 Maven Central Repository에서 아티팩트를 다운로드하는 것이 다음과 같이 간단합니다.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]
여기서 Maven 좌표groupId:artifactId:version
등은
예를 들어 Maven 2.0.9, Maven 2.2.1 및 Maven 3.0.4로 테스트했습니다.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources
(자신의 제공 파스칼 Thivent 덕분에 멋진 대답을 처음부터.이 코멘트에 맞지 않을 것하고 편집을 위해 너무 광범위한 것 때문에 내가 다른 대답을 추가하고 있습니다.)
jar:sources
의미 하는지 설명 할 수 있습니까 ? 왜 "jar"을 지정해야합니까? "소스"는 아티팩트에 필요한 추가 종속성을 다운로드한다는 의미입니까?
sources
Java 소스 만 포함하는 JAR 파일 3. javadoc
API 문서 만있는 JAR 파일 Maven 기본 아티팩트 처리기 도 참조하십시오 .
[:classifier]
다운로드하려는 assemlby 플러그인으로 생성 된 zip 파일이있는 경우 올바르게 사용하는 방법에 대해 설명해 주셔서 감사 합니다.
다음은 Maven 3.1.1과 함께 "component.jar"라는 최신 버전의 아티팩트를 다운로드하는 데 도움이 된 것입니다.
실제로 파일을 다운로드하여 로컬 작업 디렉토리에 복사합니다.
bash에서 :
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl
. 어쨌든 내 폼에서 암시 된 것 같습니다. 또한 나는 사용하지 않은 -Ddest
내가 사실대로 했다 가 일반에 다운로드 할을 .m2
디렉토리.
dest
매개 변수 는 더 이상 사용되지 않으며copy
다음 get
과 같이 호출로 대체 될 수 있습니다 mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(이 경우 jar을 작업 디렉토리에 배치).
Goal requires a project to execute but there is no POM in this directory
합니다.
mvn dependency:copy
( dependency:get
첫 번째 없이 ) 그냥 달릴 수 있습니다 .
이슈 바이너리를 얻는 방법과 관련하여 Pascal Thivent의 대답 은 그것이지만, 이슈 소스 항아리를 얻으려면 다음을 사용할 수 있습니다.
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources
예 :
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources
artifact
매개 변수가 실제로로 구성되어 있기 때문에 작동합니다 groupId:artifactId:version[:packaging][:classifier]
. 그냥 포장 및 분류는 선택 사항입니다.
와 jar
같이 포장 과 sources
같이 분류 , 받는다는 종속성 플러그인은 우리가 소스 항아리가 아닌 유물 항아리를 요청하고 이해한다.
불행히도 현재 소스 jar 파일은 전 이적으로 다운로드 할 수 없으므로 의미가 있지만 이상적으로 downloadSources
는 maven eclipse 플러그인과 마찬가지로 옵션을 존중 할 수 있다고 생각합니다 .
플러그인 구성 섹션에 정의 된 아티팩트 목록을 가져와 지정된 위치에 복사하는 dependency : copy ( http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html )를 사용할 수 있습니다. 원하는 경우 이름을 바꾸거나 버전을 제거합니다. 이 목표는 로컬 저장소 또는 리액터에 원격 저장소가없는 경우 원격 저장소의 아티팩트를 해결할 수 있습니다.
플러그인의 모든 속성을 maven CLI에서 사용할 수있는 것은 아닙니다. "사용자 속성 :"속성이 정의 된 속성을 지정할 수 있습니다. 아래 예제에서 junit을 temp 폴더에 다운로드하고 jar 파일에서 vesion을 제거합니다.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
여기서 artifact = junit : junit : 4.11은 maven 좌표입니다. 그리고 artifcat을 groupId : artifactId : version [: packaging [: classifier]]로 지정합니다
( 처음에 https://stackoverflow.com/a/18632876/2509415 를 제공해 주신 Pascal Thivent에게 감사드립니다 . 다른 답변을 추가하고 있습니다)
mvn없이 최신 maven 아티팩트를 다운로드하는 하나의 라이너 :
curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"
공식 문서의 사용법 :
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get
내 경우에는 아래 답변을 참조하십시오.
mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6
#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.
"mvn dependency : get"명령을 사용하여 특정 속성을 다운로드하고 "mvn dependency : copy"명령을 사용하여 다운로드 한 아티팩트를 dest dir "-DoutputDirectory"에 복사하십시오.
Maven 3.6을 사용하여 ASM-7을 얻는 예는 다음과 같습니다.
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
: 또는 당신은에서 여기에 단지를 다운로드 할 수 있습니다 https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm 다음
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar