2017-01-29 1 views
-1

이미 몇 가지 일반적인 jar를 포함하는 jar 파일을 만들었습니다. 다른 jar 파일을 여러 응용 프로그램에서 사용하고 많은 사용자를 통해 사용할 수 있습니다.종속성 관리를 포함하는 jar 파일 만들기

이 문제를 해결하려면 일반적인 jar 파일을 만들고이 공유 파일 항아리와 버전을 제어 한 다음 nexus 서버에 저장할 수 있으므로 부모 pom을 포함 할 수 있으며 많은 개발자가 사용할 수 있습니다.

그래서 나는 간단한 받는다는 자바 응용 프로그램을 만들고이 항아리의 치어에, 나는 예를 들어 넣어 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.emp</groupId> 
    <artifactId>dependencymanager</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.primefaces</groupId> 
       <artifactId>primefaces</artifactId> 
       <version>6.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.eclipse.persistence</groupId> 
       <artifactId>javax.persistence</artifactId> 
       <version>2.1.1</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
</project> 

그런 다음 자식 응용 프로그램에서 내가 좋아하는이 병을 사용하는 부모 치어 이 :

<dependencies> 
    <dependency> 
     <groupId>com.emp</groupId> 
     <artifactId>dependencymanager</artifactId> 
     <version>1.0</version> 
    </dependency> 
</dependencies> 

그러나 org.primefaces을 사용하려고하면 할 수 없습니다. 내가 잘못했거나 의존성 관리 구현에있어 틀린 점이 있습니까?

나는 이미이 읽기 : http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

그래서이 튜토리얼의 예에서 부모 치어의 버전을 지정하지, 내가 삭제할 때 그래서 나에게이 같은 오류를 보여줍니다

'dependencies.dependency.version' for com.emp:dependencymanager:jar is missing. 

질문

  • 이 경우 종속성 관리를 어떻게 구현할 수 있습니까?
  • 많은 프로젝트와 많은 devellopers와 동일한 종속성으로 작동하는 더 좋은 방법이 있습니까?
  • 나는 나의 항아리

감사를 저장하는 넥서스를 사용합니다.

답변

1

위해 일하는 경우 dependencyManagement 태그를 떠나, 직접 dependencies를 추가하십시오. dependencyManagement에서는 pom에 종속성이 선언 된 경우 상위 pom에 지정된 버전이 사용되도록 지정합니다. 그러나 당신의 부모님은 본질적으로 전이 의존성으로서 그 의존성을 포함하지 않습니다.

+0

'dependencyManagement'를 삭제할 때 @cello에 감사드립니다.이 부분은 해결되었으므로, 예를 들어'primefaces'의 버전을 변경하면 넥서스에이 jar 파일을 저장할 수 있습니다. 사용자? –

+0

사용자가 primeface를 다른 버전으로 추가하지 않는 한, 상위 pom에 지정된 버전이 사용됩니다. – cello

+0

그래서 왜 사람들은'dependencyManagement'에 대해 어떻게 이야기합니까? 언제 어디에서 사용할 수 있습니까? –

1

나는 jar 파일에 의존성을 가지고 있기 때문에 Maven Shade plugin을 사용했습니다. 비슷한 코드가 부모 치어에서는

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.4.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <transformers> 
           <transformer 
            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
</build> 
관련 문제