无效的类路径发布/导出依赖项/ouat-contract。不支持项目条目
Invalid classpath publish/ export dependency /ouat-contract. Project entries not supported
我正在尝试创建一个类似于此结构的Gradle 多项目
ouat-services
- ouat-contract
- ouat-servicesImpl (web project)
我遵循了 eclipse 示例并将我的 ouat-services settings.gradle 定义为
include "ouat-contract", "ouat-servicesImpl"
在我的 ouat-servicesImpl 构建中-gradle 我定义了
dependencies {
compile project(':ouat-contract')
}
当我尝试在 ouat-servicesImpl 中应用 war 插件时,我的问题开始了,我在 eclipse 问题视图中收到以下消息:
Invalid classpath publish/ export dependency /ouat-contract. Project entries not supported
我的 ouat-services build.gradle
configure(subprojects) {
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'eclipse'
apply plugin: 'java'
version = '1.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
repositories {
jcenter()
mavenLocal()
mavenCentral()
}
jar {
manifest.attributes provider: 'Company'
}
}
configure(project(':ouat-servicesImpl')) {
apply plugin: 'checkstyle'
apply plugin: 'eclipse-wtp'
apply plugin: 'findbugs'
apply plugin: 'jacoco'
//apply plugin: 'jetty'
apply plugin: 'pmd'
apply plugin: 'war'
}
buildscript {
repositories {
jcenter()
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.github.ben-manes:gradle-versions-plugin:0.10.1'
}
}
我的 ouat-servicesImpl 构建 gradle 更改为:
dependencies {
compile project(':ouat-contract')
cxfArtifacts.each { artifact ->
compile "org.apache.cxf:$artifact:$cxfVersion"
}
springArtifacts.each { artifact ->
compile "org.springframework:$artifact:$springVersion"
}
testCompile "org.testng:testng:$testNGVersion"
testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion"
testCompile "org.springframework:spring-test:$springVersion"
//WAR PLUGIN
providedCompile "javax.servlet:javax.servlet-api:$servletAPIVersion"
runtime "javax.servlet:jstl:$jstlVersion"
}
这是eclipse插件的问题还是我做错了什么?
很久以前我也运行遇到过这个问题。这似乎确实是与 "Gradle IDE Pack" 中包含的 Eclipse 插件相关的问题(因为它可以在命令行中正常运行)。
我的设置可能比你的复杂得多(我将一个顶级 gradle 项目的模块包含到另一个顶级 gradle 项目中),但要克服这个特定错误
Invalid classpath publish/ export dependency /my-project. Project entries not supported
...如果缺少某些特定的 gradle 属性,我排除了项目依赖性:
if(project.hasProperty("myProjectRefAddedFromIDE")) {
println "NB! Build script started with property 'myProjectRefAddedFromIDE' - expecting that this project in IDE is configured to add the direct reference to my-project"
} else {
compile project(':my-project')
}
并且仅从 IDE 添加 属性 "myProjectRefAddedFromIDE",我已按如下方式配置了 eclipse 插件:
Window -> 首选项 -> Gradle -> 参数 -> 程序参数 -> 使用:´-PmyProjectRefAddedFromIDE´
只是一个警告:这可能对你有用,但你的设置可能还有其他问题,至于简单的多模块项目(不包括来自另一个多模块项目的模块)我不知道必须使用此解决方法。
这是我发现的神奇步骤,无需手动修改项目设置即可正常工作。
运行 命令:gradle cleanEclipse eclipse
- 作为此命令的结果,Eclipse 忘记了该项目应该具有 gradle 性质。
通过执行配置 -> 转换为 Gradle 项目将 gradle 性质添加回项目。
- 作为此命令的结果,错误再次出现。
- 如果出现不兼容的插件 java 版本错误,则只需删除 .settings 目录并刷新。
运行 命令:gradle cleanEclipseClasspath eclipseClasspath
- 这最后一步应该在下次修复它。
就我而言,这是由于混合了 "faceted" 和非分面项目。有错误的项目已转换为分面形式,而他们所抱怨的引用的项目却没有。您可以通过使用 eclipse-wtp
插件将项目配置为分面,方法是将其添加到您的 ouat-contract gradle 文件中:
eclipse{
wtp{
facet{}
}
}
这将在使用 java 和 war 插件时为 Java 添加方面和实用程序模块(有关默认值和如果您不使用 war 插件,请手动添加分面)。实用模块部分是避免错误的关键。
请注意,如果您需要做其他事情,例如指定特定的 Apache Tomcat 运行时或类似的
请注意,在此块中,您还可以直接访问 facet 文件以执行手动 XML 操作
完成此更改后,您可以使用 Eclipse 执行 Gradle -> 在您的工作区内刷新 ouat-contract 上的所有内容 - 一旦我这样做,错误就消失了
我可以从 JRE 系统库中删除重复的 jar 文件。
步骤 右键单击“项目”并转到“构建路径”->“配置构建路径”->“库”。
删除不在类路径中或在 Maven 依赖项中重复的 jar。
我正在尝试创建一个类似于此结构的Gradle 多项目
ouat-services
- ouat-contract
- ouat-servicesImpl (web project)
我遵循了 eclipse 示例并将我的 ouat-services settings.gradle 定义为
include "ouat-contract", "ouat-servicesImpl"
在我的 ouat-servicesImpl 构建中-gradle 我定义了
dependencies {
compile project(':ouat-contract')
}
当我尝试在 ouat-servicesImpl 中应用 war 插件时,我的问题开始了,我在 eclipse 问题视图中收到以下消息:
Invalid classpath publish/ export dependency /ouat-contract. Project entries not supported
我的 ouat-services build.gradle
configure(subprojects) {
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'eclipse'
apply plugin: 'java'
version = '1.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
repositories {
jcenter()
mavenLocal()
mavenCentral()
}
jar {
manifest.attributes provider: 'Company'
}
}
configure(project(':ouat-servicesImpl')) {
apply plugin: 'checkstyle'
apply plugin: 'eclipse-wtp'
apply plugin: 'findbugs'
apply plugin: 'jacoco'
//apply plugin: 'jetty'
apply plugin: 'pmd'
apply plugin: 'war'
}
buildscript {
repositories {
jcenter()
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.github.ben-manes:gradle-versions-plugin:0.10.1'
}
}
我的 ouat-servicesImpl 构建 gradle 更改为:
dependencies {
compile project(':ouat-contract')
cxfArtifacts.each { artifact ->
compile "org.apache.cxf:$artifact:$cxfVersion"
}
springArtifacts.each { artifact ->
compile "org.springframework:$artifact:$springVersion"
}
testCompile "org.testng:testng:$testNGVersion"
testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion"
testCompile "org.springframework:spring-test:$springVersion"
//WAR PLUGIN
providedCompile "javax.servlet:javax.servlet-api:$servletAPIVersion"
runtime "javax.servlet:jstl:$jstlVersion"
}
这是eclipse插件的问题还是我做错了什么?
很久以前我也运行遇到过这个问题。这似乎确实是与 "Gradle IDE Pack" 中包含的 Eclipse 插件相关的问题(因为它可以在命令行中正常运行)。 我的设置可能比你的复杂得多(我将一个顶级 gradle 项目的模块包含到另一个顶级 gradle 项目中),但要克服这个特定错误
Invalid classpath publish/ export dependency /my-project. Project entries not supported
...如果缺少某些特定的 gradle 属性,我排除了项目依赖性:
if(project.hasProperty("myProjectRefAddedFromIDE")) {
println "NB! Build script started with property 'myProjectRefAddedFromIDE' - expecting that this project in IDE is configured to add the direct reference to my-project"
} else {
compile project(':my-project')
}
并且仅从 IDE 添加 属性 "myProjectRefAddedFromIDE",我已按如下方式配置了 eclipse 插件: Window -> 首选项 -> Gradle -> 参数 -> 程序参数 -> 使用:´-PmyProjectRefAddedFromIDE´
只是一个警告:这可能对你有用,但你的设置可能还有其他问题,至于简单的多模块项目(不包括来自另一个多模块项目的模块)我不知道必须使用此解决方法。
这是我发现的神奇步骤,无需手动修改项目设置即可正常工作。
运行 命令:gradle cleanEclipse eclipse
- 作为此命令的结果,Eclipse 忘记了该项目应该具有 gradle 性质。
通过执行配置 -> 转换为 Gradle 项目将 gradle 性质添加回项目。
- 作为此命令的结果,错误再次出现。
- 如果出现不兼容的插件 java 版本错误,则只需删除 .settings 目录并刷新。
运行 命令:gradle cleanEclipseClasspath eclipseClasspath
- 这最后一步应该在下次修复它。
就我而言,这是由于混合了 "faceted" 和非分面项目。有错误的项目已转换为分面形式,而他们所抱怨的引用的项目却没有。您可以通过使用 eclipse-wtp
插件将项目配置为分面,方法是将其添加到您的 ouat-contract gradle 文件中:
eclipse{
wtp{
facet{}
}
}
这将在使用 java 和 war 插件时为 Java 添加方面和实用程序模块(有关默认值和如果您不使用 war 插件,请手动添加分面)。实用模块部分是避免错误的关键。
请注意,如果您需要做其他事情,例如指定特定的 Apache Tomcat 运行时或类似的
请注意,在此块中,您还可以直接访问 facet 文件以执行手动 XML 操作
完成此更改后,您可以使用 Eclipse 执行 Gradle -> 在您的工作区内刷新 ouat-contract 上的所有内容 - 一旦我这样做,错误就消失了
我可以从 JRE 系统库中删除重复的 jar 文件。 步骤 右键单击“项目”并转到“构建路径”->“配置构建路径”->“库”。 删除不在类路径中或在 Maven 依赖项中重复的 jar。