Java 如何在父项目中包含子项目的资源?
我有一个包含3个项目的多项目渐变构建: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 然而,简单地将
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不太熟悉,但必须有一种方法在编译时添加依赖项项目。希望这将得到充分利用: