2014-11-04 117 views
1

我使用Maven的戰爭插件在我pom.xml生成一個jar文件並行與我war文件中的一個java web project構建。我的maven版本正在創建目標目錄中的warjar文件。並且只有war文件被安裝到本地存儲庫。有沒有辦法將創建的jar文件也推送到本地存儲庫。以下是我的pom.xml片段的Maven - Maven的戰爭插件生成JAR並安裝到本地Maven倉庫

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration>    
     <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
      </archive> 
      <archiveClasses>true</archiveClasses> 
     <packagingExcludes>WEB-INF/lib/x*.jar</packagingExcludes> 
     <webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 
     <webResources> 
     <resource> 
      <directory>${project.basedir}\src\main\webapp</directory> 
      <includes> 
      <include>**/*.*</include> 
      </includes> 
     </resource> 
      </webResources> 
    </configuration> 
</plugin> 

在此先感謝!

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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.xyz</groupId> 
    <artifactId>x</artifactId> 
    <packaging>war</packaging> 
    <version>1.0.0-SNAPSHOT</version> 
    <name>x</name> 
    <url>http://maven.apache.org</url> 
    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration>    
        <archive> 
         <addMavenDescriptor>false</addMavenDescriptor> 
         </archive> 
         <archiveClasses>true</archiveClasses> 
        <packagingExcludes>WEB-INF/lib/x*.jar</packagingExcludes> 
        <webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 
        <webResources> 
        <resource> 
         <directory>${project.basedir}\src\main\webapp</directory> 
         <includes> 
         <include>**/*.*</include> 
         </includes> 
        </resource> 
         </webResources> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${java-version}</source> 
        <target>${java-version}</target> 
        <encoding>UTF-8</encoding> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>com.googlecode.addjars-maven-plugin</groupId> 
       <artifactId>addjars-maven-plugin</artifactId> 
       <version>1.0.2</version> 
       <executions> 
       <execution> 
        <goals> 
         <goal>add-jars</goal> 
        </goals> 
        <configuration> 
         <resources> 
          <resource> 
           <directory>${project.basedir}/src/main/webapp/WEB-INF/lib</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 
</project> 
+0

你的web應用的哪些部分包含在jar文件中? jar文件的目的是什麼? – 2014-11-04 12:17:25

+0

只有java編譯的類是我的jar文件的一部分。這個jar文件用於其他模塊構建。在其他模塊構建中,我只是在依賴中提到這個jar。所以,這將在maven本地存儲庫中查找。所以,我希望我的第一個模塊構建將它的jar推送到本地存儲庫。 – Anita 2014-11-04 12:21:16

+0

你的目標是什麼? – wumpz 2014-11-04 12:23:33

回答

1

這不是使用Maven的正確途徑。 Maven完全是模塊化的,因此有一個「一個項目 - 一個工件」的規則(或推薦)。如果我無法說服你,請參閱這個博客:How to Create Two JARs from One Project (…and why you shouldn't)。這是關於多個罐子,但概念是相同的。

我認爲你應該把你的工作重組爲一個單獨的jar項目,而其他人則把它作爲依賴項。

+0

對不起。由於我對maven很陌生,所以我在一個版本中合併了我的任務。所以然後我會嘗試將任務分成兩個不同的版本。但是,僅供參考,當我試圖找到一種方法,我發現maven-war-plugin的archiveClasses標記設置爲true時,我做了我想要的任務。 – Anita 2014-11-04 13:59:55

+1

archiveClasses只將你的類打包成一個jar文件,並將它放到目標文件的/ lib目錄下。但它不會將其安裝在您的本地回購站中。根據插件文檔,「您可以將包含在您的Web應用程序中的類和資源作爲附加的」工件「部署。除了檔案類 – grid 2014-11-04 14:16:56

+0

之外,您還可以嘗試使用attach-classes,請參閱http://maven.apache.org/plugins/maven-war-plugin/faq.html#attached – grid 2014-11-04 14:22:18