2014-06-09 1 views
1

내가 마지막 JAR에 포함 된 자바 리소스 번들로 작업 메이븐 내장 JAR 다른 이름으로 여러 번 포함 영어 파일을 두 번 포함해야합니다. 표준 영어 파일 (localization_en.properties) 및보다 구체적인 현지화가없는 대체 파일 (localization.properties)을 대체하는 기본 파일로 두 번 포함해야합니다. 현재이 두 파일은 내용이 정확히 동일하더라도 자원 디렉토리에 있습니다.는 파일을 Maven의 자원 태그를 사용

Maven이 현재 localization_en.properties을 복제하고 기본 이름을 포함 할 수있는 방법을 찾고 있습니다. 따라서 리소스 디렉토리에 두 개의 분리 된 파일이 더 이상 필요하지 않습니다.

+0

필자는 파일을 복제하거나 추가하는 데 maven을 사용할 수 있다고 생각하지 않습니다. 당신은이 커스텀 appender를 생성하고 그 파일을 타겟에 삽입해야한다. 그 후에 maven은 나중에 빌드하는데 사용할 수있다. – vikeng21

답변

1

나는 ant 복사 작업을 사용하여 필요한 것을 할 수 있다고 믿습니다. 다음과 같은 것 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
     <id>copy-files</id> 
     <phase>compile</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target name="copy your files"> 
        <copy file="a.txt" tofile="a_eng.txt" /> 
        <copy file="a.txt" tofile="a.txt" /> 
       </target> 
      </configuration>      
      </execution> 
     </executions> 
</plugin> 
0

Maven 어셈블리 플러그인을 사용하면이 작업을 수행 할 수 있습니다. 본질적으로 대상 디렉토리의 클래스를 사용하여 처음부터 JAR을 빌드 한 다음 (기존의 복사 된 자원을 이미 포함 할 것임) 새 이름으로 특정 자원의 사본을 추가하십시오.

참고 정확하게 당신이 일반적으로 빌드에서 얻을 것이 무엇 경기를 수동으로 결과 JAR에 pom.propertiespom.xml을 복사해야합니다. 아마도 지나가는 주석 작성자가 자동으로이 작업을 수행하는 방법을 알고있을 것입니다.

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

    <id>example</id> 
    <formats> 
    <format>jar</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <!-- Copy all compiled classes and normal copied resources --> 
    <fileSets> 
    <fileSet> 
     <directory>${project.build.outputDirectory}</directory> 
     <outputDirectory>/</outputDirectory> 
    </fileSet> 
    </fileSets>  

    <files> 
    <!-- Specifically add renamed file --> 
    <file> 
     <source>${basedir}/src/main/resources/example.txt</source> 
     <destName>example.txt2</destName> 
     <outputDirectory>/</outputDirectory> 
    </file> 

    <!-- Copy files normally included in JAR --> 
    <file> 
     <source>${project.build.directory}/maven-archiver/pom.properties</source> 
     <outputDirectory>META-INF/maven/${project.groupId}/${project.artifactId}</outputDirectory> 
    </file> 
    <file> 
     <source>${basedir}/pom.xml</source> 
     <outputDirectory>META-INF/maven/${project.groupId}/${project.artifactId}</outputDirectory> 
    </file> 
    </files> 
</assembly> 

참고 :

<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <id>example</id> 
    <formats> 
    <format>jar</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <!-- Make executable JAR --> 
    <dependencySets> 
    <dependencySet> 
     <useProjectArtifact>true</useProjectArtifact> 
     <unpack>true</unpack> 
    </dependencySet> 
    </dependencySets> 

    <files> 
    <!-- Specifically add renamed file --> 
    <file> 
     <source>${basedir}/src/main/resources/example.txt</source> 
     <destName>example.txt2</destName> 
     <outputDirectory>/</outputDirectory> 
    </file> 
    </files> 
</assembly> 
: 당신은 (즉, 모든 종속성 자동 포함하여), 같은 목표를 달성하기 위해 훨씬 더 깔끔한 방법이 항아리-와 의존성 스타일의 출력을 생성하려는 경우