2017-12-20 2 views
0

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 
+1

Bitte zeigen Sie die Kopfzeile von 'DoublyLinkedList' an, das ist alles bis zur Klassendeklarationszeile. –

+0

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. –

Antwort

0

So wie in den Kommentaren zu der Frage angedeutet, das Problem eines fehlenden package vectors; in der DoublyLinkedList.java Datei war.