Gradle不在gradle构建上维护目录层次结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle不在gradle构建上维护目录层次结构相关的知识,希望对你有一定的参考价值。
我正在使用gradle来构建它。文件夹结构如下:
java_data_structures
├── build.gradle
├── build
| ├── classes
| | ├── groovy
| | | └── test
| | | └── DoublyLinkedListSpec.class
| | └── java
| | └── main
| | ├── Application.class
| | └── DoublyLinkedList.class
| ├── distributions
| └── other
|
└── src
├── main
│ └── java
│ ├── Application.java
│ ├── graphs
│ ├── maps
│ ├── matricies
│ ├── sets
│ ├── trees
│ ├── vectors
│ | └── DoublyLinkedList.java
│ └── Application.java
└── test
└── groovy
└── vectors
└── DoublyLinkedListSpec.groovy
问题是,build/classes/java
和build/classes/groovy
中的文件夹结构已经更改。它只是将所有类文件归为一个文件夹 - main
和tests
。这对我来说是个问题,因为在我的Application.java
文件中,我有以下代码:
public class Application {
public static void main(String[] args) {
DoublyLinkedList<Integer> list;
Integer[] array = {1, 2, 3};
list = new DoublyLinkedList<Integer>(array);
System.out.println(list);
}
}
我可以在不使用DoublyLinkedList
声明的情况下访问import
。我希望我的代码看起来像这样:
import vectors.DoublyLinkedList;
public class Application {
public static void main(String[] args) {
DoublyLinkedList<Integer> list;
Integer[] array = {1, 2, 3};
list = new DoublyLinkedList<Integer>(array);
System.out.println(list);
}
}
但是,当我使用上面的代码运行gradle build
时,我收到以下错误:
> Task :compileJava
/Users/jod/java_data_structures/src/main/java/Application.java:1: error: package vectors does not exist
import vectors.DoublyLinkedList;
^
1 error
FAILURE: Build failed with an exception.
这是可以预期的,因为build/classes/java/main
文件夹的结构具有彼此相邻的所有类文件而没有它们各自的文件夹。我的gradle.build
文件如下:
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'application'
sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = "Application"
jar {
baseName = 'java_data_structures'
version = '0.0.1'
}
repositories {
mavenCentral()
}
dependencies {
testCompile(
'junit:junit:4.12',
'org.codehaus.groovy:groovy-all:2.4.4',
'org.spockframework:spock-core:1.0-groovy-2.4',
'org.springframework.boot:spring-boot:1.2.1.RELEASE',
'cglib:cglib-nodep:2.2.2'
)
}
javadoc {
destinationDir = new File("${projectDir}/doc/javadoc")
source = sourceSets.main.allJava
classpath = configurations.compile
}
我需要做什么才能使我的文件夹层次结构保持不变?这是我想要的结构:
java_data_structures
├── build.gradle
├── build
| ├── classes
| | ├── groovy
| | | └── test
| | | └── vectors
| | | └── DoublyLinkedList.class
| | └── java
| | └── main
| | ├── Application.class
| | └── vectors
| | └── DoublyLinkedList.class
| ├── distributions
| └── other
|
└── src
├── main
│ └── java
│ ├── Application.java
│ ├── graphs
│ ├── maps
│ ├── matricies
│ ├── sets
│ ├── trees
│ ├── vectors
│ | └── DoublyLinkedList.java
│ └── Application.java
└── test
└── groovy
└── vectors
└── DoublyLinkedListSpec.groovy
答案
因此,正如对该问题的评论所示,问题是package vectors;
文件中缺少DoublyLinkedList.java
。
以上是关于Gradle不在gradle构建上维护目录层次结构的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )