2010-04-08 93 views
9

有兩個項目: 1)輸出jar文件的applet項目 2)應該託管jar文件的web應用程序項目。Maven複製項目輸出到其他項目資源

(1)完成構建後,應將applet jar文件複製到(2)的webapp文件夾中。其目的是(2)將在互聯網上託管applet(1)。

很多示例解釋瞭如何將另一個項目用作庫依賴項。其他示例顯示如何使用ant插件來複制文件。我不確定如何正確設置,以便父項目上的'mvn install'將在正確的時間進行復制。

+0

使用[dependency:copy](http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html)。 – lexicore 2010-04-08 20:47:59

回答

6

我會聲明applet作爲webapp的依賴關係,在使用Dependency plugin及其copy目標進行打包之前將其複製到webapp。整個解決方案可能是這樣的:

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>my-applet</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> <!-- we don't want the applet in WEB-INF/classes --> 
    </dependency> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.1</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
       <artifactItem> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>my-applet</artifactId> 
        <version>${project.version}</version> 
        <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory> 
        <destFileName>the-applet.jar</destFileName> 
       </artifactItem> 
       </artifactItems> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
</project> 

聲明小程序的依賴是反應堆建造順序 (但我不是100%肯定它是必需的)

+0

是的,那工作100%。你很快!而且,是的,反應堆需要依賴性(設置爲提供)。 – Thomas 2010-04-08 21:18:55

+0

@Thomas很高興有幫助。感謝您的反饋(並確認我的疑問)。 – 2010-04-08 21:25:12

+0

只有一個令人難以置信的小評論:** 提供 **保持jar被複制到** WEB-INF/lib **,而不是** WEB-INF/classes **。但它確實防止了它被冗餘複製,這是重要的一點。一個有用的答覆,感謝張貼。 – 2012-02-16 23:47:13

相關問題