我有一个包含3个项目的多项目gradle构建:A
,B
和C
。
A
和B
取决于C
C
在其myconfig.xml
文件夹中有一个文件resources
,我希望将其列为A
和B
生成的战争资源。
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
的资源文件夹,使其位于A
和B
的战争文件中?
答案 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中添加此条目