2013-06-28 40 views
0

我有一個pom.xml它應該生成一個jar-with-dependencies並將所有外部和所有寫入的類包括到我的jar文件中,並且它應該是可執行的(使用MainClass定義)。現在我的項目通過<parent/>從遠程存儲庫獲得它自己的pom.xml。我重寫了maven-assembly-plugin,但每次我打電話給jar:jar時,我的jar都只包含我自己的類文件,而不是外部類。如果我運行assembly:single,我得到所有外部類文件,但不是我自己的類。如何maven jar -with-depencies pom.xml覆蓋

父pom.xml的是這樣的:

<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> 

    <organization> 
     <name>123</name> 
     <url>123.com</url> 
    </organization> 

    <groupId>com.test</groupId> 
    <artifactId>build</artifactId> 
    <version>1.0.0</version> 
    <packaging>pom</packaging> 


    <properties> 
     <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding> 
     <compile.java.version>1.6</compile.java.version> 
    </properties> 


    <distributionManagement> 
     <repository> 
      <id>dsc-repository</id> 
      <name>buildmaster-releases</name> 
      <url>${repository.releases}</url> 
     </repository> 
     <snapshotRepository> 
      <id>dsc-repository</id> 
      <name>buildmaster-snapshots</name> 
      <url>${repository.snapshots}</url> 
     </snapshotRepository> 
    </distributionManagement> 

    <build> 
     <finalName>${project.artifactId}</finalName> 

     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>${compile.java.version}</source> 
        <target>${compile.java.version}</target> 

        <debug>true</debug> 
        <optimize>true</optimize> 

        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <addMavenDescriptor>false</addMavenDescriptor> 
         <manifestEntries> 
          <Title>${project.artifactId}</Title> 
          <Version>${project.version}</Version> 
          <Vendor>${project.organization.name}</Vendor> 

          <Build-Timestamp>${env.BUILD_ID}</Build-Timestamp> 
          <Build-Number>${env.BUILD_NUMBER}</Build-Number> 
          <Build-Revision>${env.SVN_REVISION}</Build-Revision> 
         </manifestEntries> 
        </archive> 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-source-plugin</artifactId> 
       <version>2.2.1</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <artifactId>maven-release-plugin</artifactId> 
       <version>2.4</version> 
      </plugin> 

      <plugin> 
       <artifactId>maven-javadoc-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <!-- disable java doc on release --> 
        <skip>true</skip> 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-deploy-plugin</artifactId> 
       <version>2.7</version> 
      </plugin> 

     </plugins> 
    </build> 

</project> 

我沒有機會改變這個pom.xml的!

以下的pom.xml覆蓋(throught元素)的設置(我認爲),並執行:

<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>DSCTest2Certificate</artifactId> 
    <version>0.9.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

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

    <properties> 
     <compile.java.version>1.7</compile.java.version> 
    </properties> 

    <build> 
     <plugins> 
      <!-- <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> 
       <configuration> <archive> <addMavenDescriptor>false</addMavenDescriptor> 
       <manifest> <mainClass>com.dscsag.dsct2c.main.MainClass</mainClass> </manifest> 
       <manifestEntries> <splashscreen-image>com/dscsag/dsct2c/resources/icons/loader/splash_screen.png</splashscreen-image> 
       </manifestEntries> </archive> </configuration> </plugin> --> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <addMavenDescriptor>false</addMavenDescriptor> 
         <manifest> 
          <mainClass>com.dscsag.dsct2c.main.MainClass</mainClass> 
         </manifest> 
         <manifestEntries> 
          <splashscreen-image>com/dscsag/dsct2c/resources/icons/loader/splash_screen.png</splashscreen-image> 
         </manifestEntries> 
        </archive> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </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>jreleaseinfo</artifactId> 
      <version>1.3.0</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> 
    </dependencies> 

    <scm> 
     <url>http://svnserver/svn_devel/plm/trunk/modules/DSCTest2Certificate</url> 
     <connection>scm:svn:http://svnserver/svn_devel/plm/trunk/modules/DSCTest2Certificate</connection> 
     <developerConnection>scm:svn:http://svnserver/svn_devel/plm/trunk/modules/DSCTest2Certificate</developerConnection> 
    </scm> 

</project> 

如何解決我的問題???

回答

1

如果您致電mvn jar:jarmvn assembly:single您未運行maven生命週期,這意味着配置零件將無法按預期運行。

你要撥打:

mvn package 

,而不是將其行家-JAR-插件以及因爲你已經在你的pom.xml文件中定義它的Maven的組裝插件。

+0

謝謝!我現在搜索了這個答案10小時:) –

0

我也很難找到這個答案。 我在這裏找到了這條評論。我希望它有幫助。

http://maven.apache.org/guides/mini/guide-configuring-plugins.html

注:配置所述<處決內部>標記從那些以外<處決>的,因爲它們不能從一個直接命令行調用使用不同。相反,只有在它們綁定的生命週期階段被調用時纔會應用它們。或者,如果您將配置部分移到執行部分之外,則它將全局應用於插件的所有調用。