我有相当好的分级配置,这使一切都很好。但是我的多项目构建中的一个项目是从其馀的项目中派生出来的,所以我很乐意把它移到另一个git repo中,并配置子模块来处理它。
首先,我将Project及其资源移动到子文件夹libraries/movedproject
中。在改变了梯度配置中的一些线后,它工作得很好。但后来我决定只为这个项目编写一个新的build.gradle,并将所有配置从主配置移到那里。
就在这里一切都停止了。当我尝试调用任何任务时,它总是以结尾:在项目“:libraries/movedproject”
上找不到属性“source sets”。负责此操作的行为:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
我用它来运行测试,在测试中我使用了来自其他项目的类。如果我移除该行,则生成仅在到达使用MovedProject的项目的compileTestJava任务时才会失败。如果删除该行并调用gradle:libraries/movedlibraries:properties
,我可以看到:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@1e263938
...
而gradle:libraries/movedlibrary:build
则正确生成。
目前我已将所有内容设置如下:
>
目录:
设置.分级
include Libraries/MovedProject,
SomeMainProject1,
SomeMainProject2,
SomeMainProject3
MovedProject的源集在库/MovedProject/Project.Gradle
中定义:
sourceSets {
main {
java {
srcDir 'src'
srcDir 'resources'
}
resources { srcDir 'resources' }
}
test { java {
srcDir 'test/unit'
} }
}
使用sourcesets.test.output的依赖项存储在builder/dependancies.gradle
中,并为需要MovedProject运行测试的每个项目设置:
project(':SomeMainProject1') {
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/net.jsdpu').sourceSets.test.output
}
}
}
最简单的方法是什么,以摆脱那个错误,使gradle构建项目与当前的目录结构?我想明白为什么gradle看不到那处房产。
有问题的行是有问题的,因为它假设project:libraries/movedlibrary
在当前项目之前被评估(而不是执行),情况可能并非如此。如果不是,则其他项目的源集将尚未配置。(甚至没有sourcesets
属性,因为Java基
插件还没有应用。)
通常,最好不要接触其他项目的项目模型,特别是如果它们不是当前项目的子项目。在项目A使用项目B的测试代码的情况下,推荐的解决方案是让项目B公开一个测试Jar(通过artifacts{}
块),然后由项目A使用该测试Jar。
如果希望保持原样,可以使用Gradle.ProjectSevaluated{}
或Project.EvaluationDependson()
解决此问题。有关更多信息,请参阅Gradle生成语言参考。
我尝试用构建我的Java项目,得到了以下内容: 的第25行:
下面是我的config.yml的一部分: 我有一个用于解析的类: 然而,当我跑的时候 发生以下错误: 为什么它抱怨找不到属性AuthenticationConfig而AuthenticationConfig只是实例变量的名称? 更新在我将实例变量从“private”更改为“public”后,它们被SnakeYaml识别,但这并不是我们所能肯定的。类不被识别为JavaBean。 更新我找到了根本原因
我试图建立一个具有以下依赖关系的应用程序。 这是我在红帽网站上找到的一个例子-http://www.jboss.org/quickstarts/eap/helloworld-jms/ 我正在使用Netbeans 8.0.2。(还在dos和eclipse中使用Maven命令进行了尝试)我在构建时遇到了一个错误,下面是相同的日志: 我可以在以下路径找到文件: https://maven.reposit
我有一个实体叫做 我正在尝试使用criteriaBuilder和谓词进行搜索 我在这里得到了例外 我曾提出一些类似的问题,但我没有得到任何解决办法。
为了避免在构建Java源代码时出现有关特殊字符的警告,我在中添加了这一行,在升级到Gradle2.0之前,这一行工作良好: 我该怎么解决呢?
问题内容: 为了避免在构建Java源代码时出现有关特殊字符的警告,我将这一行放在我的行中,在升级到Gradle 2.0之前,该行运行良好: 升级后,失败并显示以下错误: 我该如何解决? 问题答案: 将行更改为 解决了这个问题。