IntelliJ Idea中的java多重嵌套Gradle项目
我正在使用IntelliJ Idea 14.1.4和Gradle,并尝试创建子项目和嵌套子项目:
Project
|--Research
|--Development
|--Algorithms
这是因为研究算法与开发实现是分开的。它们是用不同的语言编写的(Python和Java),由不同的程序员使用,但是我仍然希望维护一个Gradle项目,因此最终研究人员在开发新的算法时能够使用稳定的现有算法实现
我的问题是Idea没有正确识别二级Gradle子项目的Gradle结构:项目被很好地识别,研究和开发被很好地识别,但是算法子项目没有被识别: 渐变的代码检查。算法中的build文件项目将突出显示为警告,并显示一条消息,提示测试无法应用于Groovy。lang.closure注意下面是完整的构建。格拉德尔:
test{
useTestNG()
testLogging.showStandardStreams = true
}
此外,当我尝试使用IdeaRun->;编辑配置->;默认值->;Gradle在尝试选择Gradle项目时,我看到在弹出菜单中,开发和研究确实显示为项目的子项目,但算法显示为独立项目
然而,创建项目确实会创建所有二进制文件,手动运行测试用例也可以很好地工作
当我为命令行运行Gradle时,它似乎工作得很好,并且能够识别所有嵌套项目:所有代码都在编译,测试都在运行
因此,这里的问题是,这里是否存在一个与Gradle不正常工作的想法问题,或者我做错了什么
构建的代码。gradle内部项目:
allprojects {
group 'com.project'
version 'v0.1'
repositories {
mavenCentral()
}
}
设置的代码。gradle内部项目
rootProject.name = 'Project'
include 'Development'
include 'Development:Algorithms'
include 'Research'
构建的代码。开发子项目的gradle:
subprojects {
apply plugin: 'java'
repositories {
jcenter()
}
dependencies{
testCompile 'org.testng:testng:6.9.4'
}
}
我可能写错的其他代码示例(大多数是Idea自动生成的:
项目。iml:
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="Project" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="com.project" external.system.module.version="v0.1" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build" />
<output-test url="file://$MODULE_DIR$/build" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
发展。iml
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":Development" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="com.project" external.system.module.version="v0.1" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build" />
<output-test url="file://$MODULE_DIR$/build" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
算法。iml
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":Development:Algorithms" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="com.project" external.system.module.version="v0.1" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/classes/main" />
<output-test url="file://$MODULE_DIR$/build/classes/test" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" scope="TEST">
<library>
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/plugins/testng/lib/testng.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
我想指出以下几点:
- 所有项目和子项目都有相同的组:com。项目
- 在算法中。iml外部的原始(自动生成)值。链接。项目id是:算法。我尝试将其设置为:Development:Algorithms,看看它是否会改变什么。每次更改后,我都会运行重建李>
- 在算法中。iml外部的原始(自动生成)值。根项目路径
为$MODULE\u DIR$/。我已尝试将其设置为$MODULE\u DIR$/以查看它是否会改变任何内容。每次更改后,我都会运行重建李>
***************************************编辑********************************
进一步调查显示工作区存在问题。xml文件: 那里有一个自动创建的GradleLocalSettings选项,但似乎是错误的:有两个不同的条目:一个用于开发和开发:算法,另一个用于onw,所以我在创建项目时可能做了一些错误的事情。 我的问题是,这个文件的结构是否有参考,特别是Gradle插件插入的元素是否有参考
<map>
<entry>
<key>
<ExternalProjectPojo>
<option name="name" value="Development" />
<option name="path" value="$PROJECT_DIR$/Development" />
</ExternalProjectPojo>
</key>
<value>
<list>
<ExternalProjectPojo>
<option name="name" value="Development" />
<option name="path" value="$PROJECT_DIR$/Development" />
</ExternalProjectPojo>
<ExternalProjectPojo>
<option name="name" value=":Development:Algorithms" />
<option name="path" value="$PROJECT_DIR$/Development/Algorithms" />
</ExternalProjectPojo>
</list>
</value>
</entry>
<entry>
<key>
<ExternalProjectPojo>
<option name="name" value="Project" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</key>
<value>
<list>
<ExternalProjectPojo>
<option name="name" value="Project" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
<ExternalProjectPojo>
<option name="name" value=":Development" />
<option name="path" value="$PROJECT_DIR$/Development" />
</ExternalProjectPojo>
<ExternalProjectPojo>
<option name="name" value=":Research" />
<option name="path" value="$PROJECT_DIR$/Research" />
</ExternalProjectPojo>
</list>
</value>
</entry>
</map>
共 (0) 个答案