2013-03-06 53 views
1

我創建了一個項目,其中包含許多Abstract和Generic類以及一些複合組件。我將包裝更改爲JAR,並將其用作其他項目的Maven依賴項。核心JSF2項目可重用於其他項目[JAR]

所以,服務器端的一切都在工作。 Spring注入我的類和東西..但複合組件沒有找到。我搜索周圍的stackoverflow,並看到一些引用JARs dirs的錯誤。但我不知道我是否將複合組件放在覈心項目的正確目錄上。這是我添加它的路徑(通常,就像它是一個客戶端項目一樣):

- br 
     - main 
       - webapp 
        - resources 
           - myCompositeFolder 

它是正確的嗎? 如何更改maven包裝以使其工作?

我也想問另外一件事......我必須花費大量的時間來從客戶項目中「注入」一些額外的代碼。要做到這一點,我做了組件上是這樣的:

<ui:include src="/filters/extraFilters.xhtml" /> 

和文件(extraFilters)將位於客戶端項目webapp的文件夾中。 我在同一個項目上測試過,它工作正常。只是不知道它是否會從JAR加載!

+0

非maven答案:http://stackoverflow.com/questions/8320486/structure-for-multiple-jsf-projects-with-shared-code/8320738#8320738關鍵是:他們最終應該最終在' '/ WEB-INF/lib'中JAR的/ META-INF/resources'。 – BalusC 2013-03-06 13:30:30

+0

感謝您的回答BalusC。我會嘗試手動完成,看看會發生什麼,我會稍微在這裏發佈答案。 – 2013-03-06 13:56:29

+0

我試過了,創建了META-INF並將資源放在那裏......但是在maven安裝中,它並沒有帶來子文件夾[resources/myCompositeFolder]。帶有名爲'maven'和'MANIFEST.MF'的文件夾:( – 2013-03-06 14:01:16

回答

2

在所有應有的尊重,不需要額外的意見。見Overlays

共享庫:罐子

/src/main/java/A.java 

共享資源:戰爭

/src/main/webapp/resource/resources/default/1_0/images/a.png 
/src/main/webapp/resource/resources/default/1_0/scripts/a.js 
/src/main/webapp/resource/resources/default/1_0/stylesheets/a.css 

最終的webapp:戰爭/ pom.xml的

<project ...> 
    <artifactId>final-webapp</artifactId> 
    <packaging>war</packaging> 
    <dependencies> 
    <dependency> 
     <artifactId>shared-library</artifactId> 
    </dependency> 
    <dependency> 
     <artifactId>shared-resource</artifactId> 
     <scope>runtime</scope> 
     <type>war</type> 
    </dependency>  
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <configuration> 
      <overlay> 
      <artifactId>shared-library</artifactId> 
      <excludes/> 
      </overlay> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

最終的webapp:戰爭

/resource/resources/default/1_0/images/a.png 
/resource/resources/default/1_0/scripts/a.js 
/resource/resources/default/1_0/stylesheets/a.css 
WEB-INF/lib/common-library.jar 
+0

)您可能需要兩個工件,一個用於依賴關係,另一個用於疊加。 – 2013-03-06 13:37:08

+0

我不這樣做的Maven,但是文檔中的例子表明,這基本上是所有鬆動的源代碼文件合併成一個單一的戰爭,不是包裝項目作爲在戰爭'/ WEB-INF/lib' JAR。這與OP要求的解決方案完全不同。 – BalusC 2013-03-06 13:37:58

+0

@BalusC之所以OP找不到資源是那些(共享)資源被歸檔到依賴JAR本身作爲一個庫。我更新了一個完全相同的例子。 – 2013-03-06 14:00:25

1

我做到了沒有戰爭工作。

感謝維索拉(http://bearprogrammer.com/)。解決的辦法是: 但父(核心)項目中的複合文件夾:

src\resources\META-INF\resources 

而且,完成了!所有在一個JAR!

感謝BalusC,維索拉和金!

+0

@顯然,BalusC的觀點看起來不錯。你必須重新接受你自己的答案,而不是我的答案。 – 2013-03-07 02:40:46

+0

兩者都屬實。很好的答案。應該是一種讓雙方都可以接受的方式。 – 2013-03-07 11:05:13

相關問題