2014-01-14 7 views
0

Java 어플리케이션이 있고 maven-assembly-plugin을 사용하고 있습니다. 내 릴리스의/lib 폴더에 내 의존성을 추가하고 싶습니다.Maven 어셈블리 플러그인 종속성 추가

jars가 이미 war 파일에 있기 때문에 웹 프로젝트에서 간단합니다. 나는 모든 외부 항아리가 내 로컬 .m2 저장소에 있기 때문에 standart java 응용 프로그램에서이 작업을 수행 할 것으로 생각하지 않습니다.

답변

4

나는 종종이 어셈블리 구성

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 

    <id>assembly</id> 

    <formats> 
     <format>zip</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <dependencySets> 
     <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
      <outputFileNameMapping>${artifact.groupId}.${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> 
      <useProjectArtifact>false</useProjectArtifact> 
      <!-- you may place excludes here --> 
     </dependencySet> 
    </dependencySets> 

    <files> 
     <file> 
      <outputDirectory>/</outputDirectory> 
      <source>${project.build.directory}/${project.artifactId}-${project.version}.jar</source> 
      <destName>${project.artifactId}.jar</destName> 
     </file> 
    </files> 

    <fileSets> 
     <fileSet> 
      <outputDirectory>config</outputDirectory> 
      <directory>config</directory> 
     </fileSet> 
     <fileSet> 
      <outputDirectory>/</outputDirectory> 
      <directory>src/main/bin</directory> 
     </fileSet> 
    </fileSets> 

</assembly> 

작업 그리고 당신은 또한 실행 가능한 JAR이 필요하면 그때

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
      <id>create-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>assembly/assembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

내 POM에서이를 참조 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
      <manifestEntries> 
       <Class-Path>config/</Class-Path> 
      </manifestEntries> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>lib/</classpathPrefix> 
       <classpathLayoutType>custom</classpathLayoutType> 
       <customClasspathLayout>$${artifact.groupId}.$${artifact.artifactId}.$${artifact.extension}</customClasspathLayout> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
+0

을 tnx useProjectArtifact = false 인 이유는 무엇입니까? 프로젝트 항아리는 어디로 복사합니까? – Spring

+1

예, 우리는 * main * JAR을 루트 디렉토리에 갖기로했습니다. 이는 어셈블리의 파일 섹션에 반영됩니다. 일반적으로 src/main/bin에 여러 바이너리 파일 (예 : Windows 용 배치 파일 등)이 있으며 루트 디렉토리에도 복사됩니다. – Seelenvirtuose

관련 문제