2012-08-22 3 views
0

컴파일 단계 전에 mvn install:install-file과 동등한 작업을 수행하는 방법. Maven 저장소에 존재하지 않는 lib/foo-1.0.0.jar 아래의 파일이 있습니다. 그래서 우리는 mvn install : install-file을 사용하여 수동으로 설치하고 이것을 컴파일 단계에서 의존성으로 둔다. 그러나 파일이 로컬 저장소에 설치되어 있지 않으면 컴파일 오류로 실패합니다. 어떻게컴파일하기 전에 mvn install : install-file과 동등한 작업을 수행하는 방법

+0

이 파일을 설치 한 위치는? 이 jar 파일은 버전 관리하에 프로젝트에 저장됩니까? – Ilya

+0

예 해당 버전 관리 아래 – priya

답변

2

를 사용하여 시스템 의존성 범위

<dependency> 
    <groupId>com.company.groupId</groupId> 
    <artifactId>foo</artifactId> 
    <version>1.0.0</version> 
    <scope>system</scope> 
    <systemPath>${basedir}/lib/foo-1.0.0.jar</systemPath> 
</dependency> 

${basedir}를 컴파일에이 자동으로 이전을 설치 받는다는 지시 않습니다 -가
또한 사용할 수 있습니다 pom.xml
편집의 디렉토리입니다 build-helper-maven-plugin

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>${basedir}/lib/foo-1.0.0.jar</file> 
        <type>jar</type> 
        <classifier>optional</classifier> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
+0

이 방법은 효과가 있지만 상당히 이상한 일입니다. 일반적으로 모듈 당 하나의 아티팩트에 충실하는 것이 가장 좋습니다. Nexus 레포 설정은 정말 쉽습니다. – artbristol

+1

@artbristol Nexus 저장소를 설정하면 설정이 복잡해집니다. 이 방법을 사용하면 누구나 프로젝트를 체크 아웃하고 명령을 먼저 읽지 않아도 "mvn clean install"을 실행할 수 있습니다. –

+0

@ ThorbjørnRavnAndersen 필자는 fffing없이 mvn을 새로 설치할 수 있다는 것이 중요하다고 동의합니다. POM의'repositories' 섹션에 넥서스 저장소를 지정할 수 있습니까? – artbristol

1

Nexus와 같은 회사 차원의 Maven 프록시를 설치합니다. 아티팩트를 거기에 넣었습니다. 각 개발자는 해당 프록시를 가리 키도록 settings.xml을 변경해야합니다. jars를 버전 관리로 확인하는 것은 일반적으로 좋지 않습니다. 특히 분산 된 SCM으로 이동하려는 경우에 특히 좋습니다.

관련 문제