gpt4 book ai didi

java - 未添加到Classpath的Gradle项目资源

转载 作者:行者123 更新时间:2023-12-03 06:19:42 26 4
gpt4 key购买 nike

我的任务是为现有项目编写一些用于自动集成测试的基类,并且遇到了项目依赖性问题。

(抽象的)项目布局是这样的:

project /
MainProject
Plugins /
...
ConfigurationProject
IntegrationTestProject

IntegrationTestProject依赖于ConfigurationProject,后者具有以下布局:
ConfigurationProject/
PluginConfigs/
<plugin configuration files>
<main configuration files>

值得注意的是,主要配置文件位于项目的根目录中。为了将它们添加到我的类路径中,我的主要build.gradle具有以下内容:
project('ConfigurationProject') {
description = 'Configuration'
sourceSets.main.resources.srcDir projectDir
}

看起来似乎还可以,因为eclipse将根目录中的所有文件显示为项目资源的一部分,并按预期方式打包了所有内容。

但是,当我实际去运行集成测试时,ConfigurationProject资源似乎不在类路径中,因为它无法提取配置信息,此代码段的输出中不存在ConfigurationProject进一步证实了这一点:
public void classpathScanner() {
ClassLoader c=getClass().getClassLoader();
System.out.println("c="+c);
URLClassLoader u=(URLClassLoader)c;
URL[] urls=u.getURLs();
for (URL i : urls) {
System.out.println("url: "+i);
}
}

使用IntegrationTestProjects gradle.build将ConfigurationProject包含在IntegrationTestProject中
dependencies {
compile project(':ConfigurationProject')
}

我仅在将项目根目录添加为资源时才观察到此问题,将项目的subng子文件夹添加到sourceSets似乎很好(并且在该项目的其他地方使用过)。我已经考虑过将配置文件移动到子文件夹中,如果没有其他解决方案,它将生效,但是我想查看是否有不涉及此操作过程的选项。

最佳答案

答案基本上是“不要将项目根目录设置为资源文件夹,Gradle讨厌它,即使它没有,也无论如何都是不好的形式”,我通过将配置文件放置在更合理的资源路径中来解决了这个问题。

关于java - 未添加到Classpath的Gradle项目资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com