2017-12-16 5 views
0

나는 내 클래스 종속성을 포함하는 Maven POM.xml 파일을 가지고있다. 명령 사용 mvn clean compile assembly:single 모든 종속성을 가진 fat 실행 가능 jar 파일을 만들 수 있습니다. 이제 POM.xml에 종속성을 포함하여 실행 불가능한 항아리를 만들 수 있고 코드 또는 클래스가 포함되어 있지 않은지 궁금합니다.종속성을 포함하여 maven jar 패키지를 만드는 방법

<?xml version="1.0" encoding="UTF-8"?> 
<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>Saprk</groupId> 
    <artifactId>SparkPMUProcessing</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>SparkStreaming</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.11</artifactId> 
      <version>2.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-streaming_2.11</artifactId> 
      <version>2.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-streaming-kafka-0-10_2.11</artifactId> 
      <version>2.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.7.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.kafka</groupId> 
      <artifactId>kafka_2.11</artifactId> 
      <version>0.10.0.0</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

그래서 클래스 권한을 제외한 pom.xml의 모든 종속성을 포함하는 단일 jar를 시도하십시오 –

+0

@ArvindKatte 바로 그렇습니다! – soheil

+0

'/path of jars '이 태그를 사용하여'pom.xml'에서 jar 파일을 제외 할 수 있습니다. –

답변

0

하나의 솔루션은 의존성을 위해 별도의 모듈을 만드는 것입니다. 루트 pom.xml의 종속 그런 다음이

<packaging>pom</packaging> 
<modules> 
    <module>core</module> 
    <module>dependencies</module> 
</modules> 

처럼 모듈의 치어를 볼 것을 yor의 모든 종속성을 정의하고처럼 maven-assembly-plugin를 사용

<dependencies> 
    ... 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

그리고 주요 모듈 기준에 의존성을 모듈을 종속성으로 사용