Language/Java

Maven executable Jar 생성 pom

아르비스 2016. 2. 22. 21:52

Maven에서 executable jar를 만든 pom

1) Lib folder 생성 시


<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-dependency-plugin</artifactId>

    <executions>

        <execution>

            <id>copy-dependencies</id>

            <phase>prepare-package</phase>

            <goals>

                <goal>copy-dependencies</goal>

            </goals>

           <configuration>

                <outputDirectory>${project.build.directory}/lib</outputDirectory>

                <overWriteReleases>false</overWriteReleases>

                <overWriteSnapshots>false</overWriteSnapshots>

                <overWriteIfNewer>true</overWriteIfNewer>

            </configuration>

        </execution>

    </executions>

</plugin>

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-jar-plugin</artifactId>

    <configuration>

        <archive>

           <manifest>

               <addClasspath>true</addClasspath>

         <classpathPrefix>lib/</classpathPrefix>

                <mainClass>fully.qualified.MainClass</mainClass>

            </manifest>

        </archive>

    </configuration>

</plugin>


2) Single Jar (dependency 포함)


<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-jar-plugin</artifactId>

    <configuration>

       <archive>

          <manifest>

             <addClasspath>true</addClasspath>

             <mainClass>fully.qualified.MainClass</mainClass>

   </manifest>

       </archive>

    </configuration>

</plugin>

<plugin>

   <artifactId>maven-assembly-plugin</artifactId>

   <configuration>

      <archive>

        <manifest>

           <addClasspath>true</addClasspath>

           <mainClass>fully.qualified.MainClass</mainClass>

        </manifest>

      </archive>

      <descriptorRefs>

          <descriptorRef>jar-with-dependencies</descriptorRef>

      </descriptorRefs>

    </configuration>

    <executions>

        <execution>

            <phase>package</phase>

            <goals>

                <goal>single</goal>

            </goals>

        </execution>

    </executions>

</plugin> 


3) Spring Boot를 이용한 Single jar 인 경우

<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

    <executions>

       <execution>

     <goals>

         <goal>repackage</goal>

     </goals>

     <configuration>

       <classifier>spring-boot</classifier>

       <mainClass>${fully.qualified.main.class}</mainClass>

     </configuration>

       </execution>

   </executions>

</plugin>



Spring boot인 경우.... 간단하다..

하지만, 위에 껄로 쓰면 에러난다.

꼭 Spring boot 용 plugin을 추가 할 것!!!