2011-02-28 2 views
6

뭔가를 놓치고 있어야합니다. 나는 검색 및 검색하고 놀고 조정할 수 없으며 Maven을 사용하여 다음을 수행하는 방법을 여전히 알 수 없습니다.Maven : 아티팩트 및 그 deps를 특정 디렉토리에 다운로드

이 아티팩트 및 모든 종속성 (및 전이 의존성)을 우리의 내부 Nexus 서버를 사용자가 지정한 위치로 옮깁니다. 여기서 아이디어는 한 곳에서 필요한 모든 jar 파일을 쉽게 얻을 수있는 방법으로 솔루션을 배포하는 사람이 프로덕션 환경에 있도록 허용하는 것입니다.

의존성이 있습니다. get, this is close-but-no-cigar입니다. 의존성 : get을 사용하면 모든 아티팩트가 각 아티펙트의 groupId 및 artifactId에 따라 디렉토리 아래에있는 로컬 mvn 저장소로 다운로드됩니다. 이것은 내가 원하는 것만은 아닙니다. 왜냐하면 그 항아리에 도착하기 위해서는 모든 디렉토리를 둘러 봐야하기 때문입니다. 하나의 디렉토리에 모든 파일을 다운로드하여 한 곳에서 관리하기를 바랍니다.

그런 다음 종속성이 있습니다. 복사 의존성. 이것은 내가 원하는 것을 다시한다. 이슈의 모든 deps를 target/dependency로 복사합니다. 이 두 가지 문제는 1) pom.xml이 있어야합니다. dependency : get과 같이 임의의 좌표를 지정할 수 없으며 2) dependency : copy-dependencies는 주요 이슈 자체를 대상/의존성으로 복사하지 않습니다.

더 좋은 방법이 있어야하지만 솔루션을 찾을 곳을 찾을 수 없습니다. 요약하면, 누군가에게 maven 좌표 세트 (groupId : artifactId : version)와 내부 Nexus URL을 제공하고 하나의 명령으로 모든 것을 자신이 선택한 디렉토리에 다운로드하게하고 싶습니다.

+0

의존성으로 사용하는 프로젝트를 만들 수 있습니까? 프로젝트를 이동하고 그 항아리로 자체 이슈를 생성합니까? – corsiKa

+0

나는 그렇게 생각한다. 그러나 그것이 옳다고 생각하지는 않는다. 이슈를 직접 다운로드하는 방법이 있어야합니다. – Steven

+0

전적으로 동의합니다. 그것은 옳지 않은 것처럼 보입니다. 그리고 누군가가 원했던 마지막 일은 "우리가 더 좋은 길을 찾을 때까지는 효과가있는 것"입니다. 왜냐하면 여러분은 고르지 못하게 막혀있을 것이기 때문입니다. 하지만 다른 모든 것이 실패하면 ... :) – corsiKa

답변

0

"누군가에게 maven 좌표 세트를주고 싶다면"특별한 pom.xml에 넣는 것이 가장 좋습니다 (당신은 어디에서나 써야합니다). 이 pom은 "주요 유물"의 덩어리가 아니며 "주요 유물"을 종속성으로 가지고 있습니다. 이 프로젝트는 artifcat 자체를 생성하지 않으므로 패키징 유형은 pom 일 수 있습니다.

그런 다음 이미 평가 한 dependency:copy-dependencies 솔루션을 사용하면 필요한 모든 종속성을 얻을 수 있습니다. IMHO는 우아하고 간단한 솔루션입니다. 나는 더 잘 모른다.

1

maven 어셈블리 플러그인을 사용하면 "종속성이있는 jar"를 모든 것을 포함하는 ZIP 파일로 패키징 할 수 있습니다.

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <!-- TODO: a jarjar format would be better --> 
    <id>jar-with-dependencies</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

그런 다음 사용자는 모든 종속성 zip 파일을 얻기 위해 '받는다는 좌표'정규뿐만 아니라, <type>zip</type> 요청할 수 있습니다.

+0

+1 - 저는 실행 가능한 데스크톱 응용 프로그램을 배포해야 할 때 어셈블리 플러그인을 사용하여 프로젝트의 JAR을 패키지로 묶었습니다. 모든 종속 JAR이 클래스 경로에 있어야합니다. 구성하기가 쉽고 훌륭한 문서가 있습니다. –

관련 문제