Ich beginne ein Projekt mit Gradle, um es zu bauen. Die Ordnerstruktur folgt:Gradle nicht beibehalten Verzeichnishierarchie auf Gradle Build
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
Das Problem ist, dass die Ordnerstruktur in den build/classes/java
und build/classes/groovy
wurde geändert. Es werden nur alle Klassendateien in einen Ordner zusammengefasst - main
bzw. tests
. Dies ist ein Problem für mich, weil in meiner Application.java
Datei, habe ich den folgenden Code:
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);
}
}
Ich kann den DoublyLinkedList
ohne Verwendung eines import
Anweisung zuzugreifen. Ich möchte für mein Code wie folgt aussehen:
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);
}
}
Aber, wenn ich gradle build
mit dem obigen Code ausführen, bekomme ich folgende Fehlermeldung:
> 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.
Dies ist zu erwarten, da die Struktur des Ordners build/classes/java/main
hat alle Klassen-Dateien nebeneinander ohne ihre jeweiligen Ordner. Meine gradle.build
Datei folgt:
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
}
Was benötige ich, so zu tun, dass meine Ordner-Hierarchie das gleiche hält? Das ist die Struktur Ich mag würde:
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
Bitte zeigen Sie die Kopfzeile von 'DoublyLinkedList' an, das ist alles bis zur Klassendeklarationszeile. –
Hey, ich habe gestern festgestellt, dass das das Problem war. Ich hatte nicht die Zeile 'package vectors;' an der Spitze. Sobald ich die 'package' Zeilen zu jeder Datei hinzugefügt habe, hat es wie erwartet funktioniert. Ich habe das kleine Detail übersehen, da ich dies in Atom geschrieben habe (keine IDE), und ich habe vergessen, es selbst zu tippen. –