2013-07-09 3 views
15

나는 끔찍한 행동이있다. 나는 다음과 같은 메이븐 구성이 :Maven : JAR에 리소스를 포함

<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> 
    <artifactId>Test2Certificate</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <parent> 
     <groupId>com.test</groupId> 
     <artifactId>build</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <properties> 
     <compile.java.version>1.7</compile.java.version> 
     <file.product.version>0.1.0.0</file.product.version> 
     <maven.build.timestamp.format>yyyy-MM-dd HH:mm:SSS</maven.build.timestamp.format> 
    </properties> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>launch4j-xml-plugin-repo</id> 
      <name>launch4j-xml-plugin Repository for Maven</name> 
      <url>https://launch4j-xml-plugin.googlecode.com/svn/repo</url> 
     </pluginRepository> 
    </pluginRepositories> 

    <build> 
     <finalName>${project.artifactId}_${project.version}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>buildnumber-maven-plugin</artifactId> 
       <version>1.2</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>create</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <doCheck>false</doCheck> 
        <doUpdate>false</doUpdate> 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
       <executions> 
        <execution> 
         <id>copy-resources</id> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/target</outputDirectory> 
          <includeEmptyDirs>true</includeEmptyDirs> 
          <resources> 
           <resource> 
            <targetPath>${basedir}/target/customize</targetPath> 
            <directory>customize</directory> 
            <filtering>false</filtering> 
           </resource> 
           <resource> 
            <targetPath>${basedir}/target/resources</targetPath> 
            <directory>resources</directory> 
            <filtering>false</filtering> 
           </resource> 
           <resource> 
            <targetPath>${basedir}/target/xml</targetPath> 
            <directory>xml</directory> 
            <filtering>false</filtering> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <appendAssemblyId>false</appendAssemblyId> 
        <archive> 
         <manifest> 
          <mainClass>com.dscsag.dsct2c.main.MainClass</mainClass> 
         </manifest> 
         <manifestEntries> 
          <SplashScreen-Image>com/dscsag/dsct2c/resources/icons/loader/splash_screen.png</SplashScreen-Image> 
          <SCM-Revision>${buildNumber}</SCM-Revision> 
          <Project-Version>${project.version}</Project-Version> 
          <Build-Date>${maven.build.timestamp}</Build-Date> 
          <Project-Name>${project.artifactId}_${project.version}</Project-Name> 
         </manifestEntries> 
        </archive> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jarsigner-plugin</artifactId> 
       <version>1.2</version> 
       <executions> 
        <execution> 
         <id>sign</id> 
         <goals> 
          <goal>sign</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <keystore>src/main/resources/jarsigner/keystore/dsct2c.keystore</keystore> 
        <alias>dsct2c</alias> 
        <storepass>DSCTest2Certificate</storepass> 
        <keypass>DSCTest2Certificate</keypass> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.bluestemsoftware.open.maven.plugin</groupId> 
       <artifactId>launch4j-plugin</artifactId> 
       <version>1.5.0.0</version> 
       <executions> 
        <execution> 
         <id>l4j-gui</id> 
         <phase>package</phase> 
         <goals> 
          <goal>launch4j</goal> 
         </goals> 
         <configuration> 
          <headerType>gui</headerType> 
          <outfile>target/${project.artifactId}_${project.version}.exe</outfile> 
          <jar>target/${project.artifactId}_${project.version}.jar</jar> 
          <errTitle>${project.artifactId} ${project.version} - Error</errTitle> 
          <icon>src/main/java/com/dscsag/dsct2c/resources/icons/DSCT2C.ico</icon> 
          <jre> 
           <path>jre7</path> 
           <minVersion>1.7.0_17</minVersion> 
           <initialHeapSize>128</initialHeapSize> 
           <maxHeapSize>512</maxHeapSize> 
          </jre> 
          <versionInfo> 
           <fileVersion>1.0.0.0</fileVersion> 
           <txtFileVersion>1.0</txtFileVersion> 
           <fileDescription>Tool to certificate third-party products/adaptor.</fileDescription> 
           <copyright>DSC Software AG</copyright> 
           <productVersion>${file.product.version}</productVersion> 
           <txtProductVersion>${file.product.version}</txtProductVersion> 
           <productName>${project.artifactId}</productName> 
           <internalName>${project.artifactId}</internalName> 
           <originalFilename>${project.artifactId}_${project.version}.exe</originalFilename> 
          </versionInfo> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.itextpdf</groupId> 
      <artifactId>itextpdf</artifactId> 
      <version>5.4.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jsoup</groupId> 
      <artifactId>jsoup</artifactId> 
      <version>1.7.2</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.6</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs.swingx</groupId> 
      <artifactId>swingx-all</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>com.toedter</groupId> 
      <artifactId>jcalendar</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.jgoodies</groupId> 
      <artifactId>jgoodies-common</artifactId> 
      <version>1.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.jgoodies</groupId> 
      <artifactId>jgoodies-looks</artifactId> 
      <version>2.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>dsct2c.help</groupId> 
      <artifactId>pdf_render</artifactId> 
      <version>0.9.1</version> 
     </dependency> 
     <dependency> 
      <groupId>dsct2c.help</groupId> 
      <artifactId>jh</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>dsct2c.help</groupId> 
      <artifactId>hsviewer</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>dsct2c.help</groupId> 
      <artifactId>dsct2c_help</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-net</groupId> 
      <artifactId>commons-net</artifactId> 
      <version>3.3</version> 
     </dependency> 
    </dependencies> 

</project> 

이 모든 클래스를 포함하는 내 JAR의 헛소리를 만들지 만 나는 또한 포함되어야하는 클래스 경로에 어떤 자원을 가지고있다. 위상 을 위상 package 앞에두면 모든 리소스가 포함됩니다. mvn clean package으로 maven을 실행하면 포함 된 리소스가 없습니다. 내 리소스는 보통 디렉토리가 아닌 src/main/java/com/test/입니다.

+0

POM ... – Puce

답변

22

자원의 소스 디렉토리가 copy-resources 목표 구성에서 올바르게 정의되지 않았습니다. 또한 outputDirectory 요소는 target/classes이 기본적으로 패키지화 될 때 target 디렉토리에 리소스를 넣습니다. 당신은 기본 라이프 사이클이 처리됩니다 완전히 여분 maven-resources-plugin 설정을 제거 할 수 있습니다, 그리고

src 
    main 
     resources 
     customize 
     resources 
     xml 

: 당신과 같이, ${basedir}/src/main/resources의 자원을두고하는 것이 좋습니다 말했다

<configuration> 
    <outputDirectory>${basedir}/target/classes</outputDirectory> 
    <includeEmptyDirs>true</includeEmptyDirs> 
    <resources> 
     <resource> 
      <directory>${basedir}/src/main/java/com/test/customize</directory> 
      <filtering>false</filtering> 
     </resource> 
     <resource> 
      <directory>${basedir}/src/main/java/com/test/resources</directory> 
      <filtering>false</filtering> 
     </resource> 
     <resource> 
      <directory>${basedir}/src/main/java/com/test/xml</directory> 
      <filtering>false</filtering> 
     </resource> 
    </resources> 
</configuration> 

:이 설정을보십시오 리소스를 올바르게.

+0

에서 "src/main/java/com/test /"를 사용하는 위치가 표시되지 않습니다. 해당 플러그인을 사용할 때 nullpointerexception이 발생합니다. – user1007522

+0

이것은 아마도 매우 오래된 버전의 플러그인을 사용하고 있거나 잘못 구성된 것을 의미합니다. – user944849

+0

최신 버전을 사용하고 있습니다. – user1007522

관련 문제