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

Java 如何在父项目中包含子项目的资源?,java,web-applications,gradle,war,Java,Web Applications,Gradle,War,我有一个包含3个项目的多项目渐变构建:a、B和C A和B取决于C C在其resources文件夹中有一个文件myconfig.xml,我想将其作为资源包含在为a和B生成的war中 A -- project type - WAR -- depends on - C B -- project type - WAR -- depends on - C C -- project type - JAVA \_ src\main\resources \_ myconfig.xml 然而,简单地将

我有一个包含3个项目的多项目渐变构建:
a
B
C

A
B
取决于
C

C
在其
resources
文件夹中有一个文件
myconfig.xml
,我想将其作为资源包含在为
a
B
生成的war中

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文件的
WBE-INF\classes
文件夹中不存在
myconfig.xml
文件。它确实存在于
C.jar
文件中,但这不是它需要的地方


如何共享
C
的resources文件夹,使其位于
A
B
的war文件中?

要使用另一个项目的资源,我们应该将该项目导入我们的类路径

进口使用,, < classpathentry combineaccessrules=“false”kind=“src”path=“/your project c path”/


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

我不确定它在gradle中如何工作,但在maven中,您可以使用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>

org.apache.maven.plugins
maven依赖插件
yourgroupid
C
${project.version}
罐子
真的
${project.build.directory}/WEB-INF/classes
myconfig.xml
编译
打开

gradle中也应该有类似的东西,可能只是一个指针。

考虑直接从C.jar访问xml,因为它位于类路径中。您可以将资源作为流打开。查看此帖子

您能解释一下如何读取myconfig.xml文件吗?如果您尝试使用
getClass().getResourceAsStream(“/myconfig.xml”)
您将阅读它,无论它位于
WEB-INF/classes
文件夹或类路径中的jar中。显然,最好将JAR中的资源放入文件夹中(例如:代码> MY-C-LIb/MyCONFIG.XML/COD>)以避免冲突。< /P>在线上的任何示例项目都有尝试。考虑从“代码> C.jar < /代码>直接访问XML,因为它在类路径中。您可以将资源作为流打开。看看这个帖子@antok。你能加上这个作为回答吗?我们这里说的是一个gradle项目。不确定您所说的是哪个.classpath文件?我对gradle不太熟悉,但必须有一种方法在编译时添加依赖项项目。希望这将得到充分利用: