如何在子项目中包含子项目的资源?

时间:2015-05-26 23:55:37

标签: java web-applications gradle war

我有一个包含3个项目的多项目gradle构建:ABC

AB取决于C C在其myconfig.xml文件夹中有一个文件resources,我希望将其列为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&的依赖关系。 B似乎没有这样做。 war文件的myconfig.xml文件夹中的WBE-INF\classes文件。它确实存在于C.jar文件中,但并不是它需要的地方。

如何共享C的资源文件夹,使其位于AB的战争文件中?

4 个答案:

答案 0 :(得分:3)

我不确定它是如何在gradle中工作但在maven中你可以用maven-dependency-plugin来做:

    <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 :(得分:2)

考虑直接从C.jar访问xml,因为它在类路径中。您可以将资源作为流打开。查看此帖子Reading a resource file from within jar

答案 2 :(得分:1)

您能解释一下如何阅读myconfig.xml文件?如果您尝试使用getClass().getResourceAsStream("/myconfig.xml"),无论是WEB-INF/classes文件夹还是类路径中的jar,都会读取它。显然,最好将资源放入jar中(例如:my-c-lib/myconfig.xml)以避免冲突。

答案 3 :(得分:-1)

要使用其他项目的资源,我们应该将该项目导入到我们的类路径中。

要导入使用, &LT; classpathentry combineaccessrules =“false”kind =“src”path =“/ your project c path”/&gt;

在类路径(.classpath文件)项目A和B中添加此条目