2015-05-26 203 views
3

我有一個包含3個項目的多項目gradle build:ABC如何在父項目中包含子項目的資源?

AB取決於C
C在它的resources文件夾中有一個文件myconfig.xml,我想將其包含爲爲AB生成的戰爭資源。

A -- project type - WAR 
    -- depends on - C 
B -- project type - WAR 
    -- depends on - C 
C -- project type - JAVA 
\_ src\main\resources 
\_ myconfig.xml 

然而,簡單地具有C作爲對於A &乙犯規的依賴性似乎做到這一點。 myconfig.xml文件是而不是目前在戰爭文件的WBE-INF\classes文件夾中。它確實存在於C.jar文件中,但不在需要的地方。

我該如何共享C的資源文件夾,使其在AB的戰爭文件中?

+0

任何在線示例項目都有嘗試嗎? – Opal

+1

考慮直接從'C.jar'訪問xml,因爲它在類路徑中。您可以以流的形式打開資源。檢查這篇文章http://stackoverflow.com/questions/20389255/reading-a-resource-file-from-within-jar –

+0

@AntonK。你可以添加這個作爲答案 – pdeva

回答

-1

要使用另一個項目的資源,我們應該將該項目導入到我們的類路徑中。

要導入使用, < classpathentry combineaccessrules = 「假」 的那種= 「SRC」 路徑= 「/你的項目C路徑」/>

添加在classpath(.classpath文件)此項工程一和B

+0

我們在這裏談論一個gradle項目。不知道你正在談論哪個.classpath文件? – pdeva

+0

我不熟悉gradle,但是在編譯時必須有一種方法來添加依賴項目。希望這將被使用完整:https://java.net/downloads/satjug/Enter%20the%20Gradle.pdf – dilly

3

我不知道它是如何工作的gradle產出,但在行家,你可以使用Maven的依賴,插件做到這一點:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>yourgroupid</groupId> 
        <artifactId>C</artifactId> 
        <version>${project.version}</version> 
        <type>jar</type> 
        <overWrite>true</overWrite> 
        <outputDirectory>${project.build.directory}/WEB-INF/classes</outputDirectory> 
        <includes>myconfig.xml</includes> 
       </artifactItem> 
      </artifactItems> 
     </configuration> 
     <executions> 
      <execution> 
       <phase>compile</phase> 
       <goals> 
        <goal>unpack</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

應該有gradle這個類似的東西太多,只是一個指針可能。

1

你能解釋你如何閱讀myconfig.xml文件?如果您嘗試使用getClass().getResourceAsStream("/myconfig.xml"),則無論文件夾位於WEB-INF/classes文件夾還是位於classpath中的jar文件夾中,都可以讀取它。顯然,爲了避免衝突,最好將資源放入文件夾中(例如:my-c-lib/myconfig.xml)。

相關問題