2010-02-25 70 views
5

是否有能力構建maven工件,其中只包含資源但不包含任何源,並且可以被其他項目重用?maven可重用資源項目可能嗎?

動機如下。我有一個只包含html/css/javascript代碼的庫。這個圖書館必須作爲資源打包到戰爭項目中。至於現在我用單個pom構建資源的網絡存檔。但我能夠將html/css/javascript代碼分離爲新的工件,並在幾個戰爭項目中重用它?

回答

9

使用Maven Overlays。有關更多示例,請參見Manipulating WAR Overlays

+1

@Pascal Thivent你似乎知道你周圍的maven文檔的方式,它的寫得很好,但是如果你問我,結構很糟糕。是否有鏈接包含從a到z的所有文檔,也許我會找到一些我可以稍後使用的,甚至現在可以使用的東西,但我不知道它存在.. +1 – ant 2010-02-25 23:14:33

+0

這就是它!謝謝。 – 2010-02-26 08:40:32

+0

@c0mrade文檔是人們經常抱怨的東西,所以我想你是對的(信息在那裏,但很難找到,這正是你所說的)。幸運的是,我知道去哪裏尋找或者現在搜索什麼。但是有一些很好的書可以幫助你,例如http://www.sonatype.com/book/(可以在線獲得)或http://www.packtpub.com/apache-maven-2-effective-implementations/書。強烈推薦。 – 2010-02-26 09:41:25

1

您可以使用Maven assembly plugin

+0

我究竟能做到這一點? – 2010-02-25 20:29:35

+0

@Volodymyr請檢查我鏈接的用戶指南,它也包含示例。如果你有一個更具體的問題,並告訴我們有關你的項目的更多細節,我們可以給你更具體的答案:-) – 2010-02-25 20:37:03

+0

據我瞭解分配組件它是最終的東西,不可重複使用。不是嗎?如果是這樣,他們不適合做我需要的東西。通過maven-assembly-plugin,我可以爲資源庫創建分發程序集。在我的戰爭中,我甚至可以使用這個神器作爲依賴。在這種情況下,我將獲取target \ war-artifact-1.0 \ WEB-INF \ lib \ resource-artifact-1.0.jar而不是解壓縮到目標\ war-artifact-1.0 \文件夾中的發佈程序集的內容。在提供的指南中,我沒有找到任何方式將分發程序集提取到Web檔案的根目錄中。 – 2010-02-25 22:19:23

0

我不認爲maven會阻止你將一些資源震撼到一起,並將其作爲Web項目中的依賴項添加。

但是,您需要引用資源的方式會有點奇怪。 我不習慣將CSS樣式表作爲Java資源加載到WEB-INF/lib中的jar文件中。

我想將它們作爲正常的Web資源,相對於WAR文件的根,而不是通過類加載器。

+0

是的,我不需要資源被震動。我需要它們存在於我的Web文件夾和Web存檔中,以靜態方式引用它們,而不是通過類加載器。 – 2010-02-25 20:36:53

0

這是一個非常簡單的事情進行測試:

$ ls -R 
.: 
pom.xml src 

./src: 
main 

./src/main: 
resources 

./src/main/resources: 
README.txt content-is-here.txt 

$ mvn package 
... Maven doing it's thing... 

$ unzip -l target/test-1.0-SNAPSHOT.jar 
Archive: target/test-1.0-SNAPSHOT.jar 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 02-25-2010 16:18 META-INF/ 
     123 02-25-2010 16:18 META-INF/MANIFEST.MF 
     10 02-25-2010 16:18 content-is-here.txt 
     0 02-25-2010 16:18 README.txt 
     0 02-25-2010 16:18 META-INF/maven/ 
     0 02-25-2010 16:18 META-INF/maven/group/ 
     0 02-25-2010 16:18 META-INF/maven/group/test/ 
     626 02-25-2010 16:15 META-INF/maven/group/test/pom.xml 
     106 02-25-2010 16:18 META-INF/maven/group/test/pom.properties 
---------      ------- 
     865      9 files 
+0

我需要有兩個項目,而不是一個。第一個項目應該包含資源。第二個項目應該包括第一個項目投入戰爭的資源。 – 2010-02-25 21:56:32

+0

然後WAR覆蓋是你想要的 – 2010-02-26 03:44:30

+0

是的,我現在可以看到疊加層正是我所需要的。 – 2010-02-26 08:42:28

0

這可以通過不和諧的資源神器期間validate階段,例如它解壓到的src /主/資源在戰爭中的項目來完成。資源POM是微不足道,但戰爭POM將包含以下內容:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>validate</phase> 
      <goals> 
      <goal>unpack</goal> 
      </goals> 
      <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>my.company</groupId> 
        <artifactId>resource-artifact</artifactId> 
        <version>1.0</version> 
        <overWrite>true</overWrite> 
        <outputDirectory>src/main/resources</outputDirectory> 
       </artifactItem> 
      </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>