Maven-projekt med flere kildekataloger

1. Introduktion

Vi har undertiden brug for flere kildekataloger i et Java-projekt. Et almindeligt eksempel på tilfælde, når der er klasser, der genereres automatisk og placeres i en anden mappe.

I denne korte artikel viser vi, hvordan man gør det opsæt Maven til at arbejde med yderligere kildekataloger.

2. Tilføjelse af en anden kildekatalog

Forudsat at vi allerede har oprettet et Maven-projekt, lad os tilføje en ny kildekatalog kaldet en anden-src i src / main folder.

Lad os derefter oprette en simpel Java-klasse inde i denne mappe:

public class Foo {public static String foo () {return "foo"; }}

Lad os nu oprette en anden klasse i vores src / main / java bibliotek, der bruger Foo klasse, vi lige har oprettet:

offentlig klasse MultipleSrcFolders {offentlig statisk ugyldig callFoo () {Foo.foo (); }}

Vores projektstruktur ser nu sådan ud:

Hvis vi prøver at kompilere dette projekt med Maven, får vi en kompileringsfejl fordi Foo klasse er ikke inkluderet i projektet:

[FEJL] ... / MultipleSrcFolders.java: [6,9] kan ikke finde symbol [FEJL] symbol: variabel Foo [FEJL] placering: klasse com.baeldung.maven.plugins.MultipleSrcFolders

3. Brug af Builder Helper Plugin

Med Maven kan vi bruge Bygger Helper plugin for at tilføje flere kildekataloger. Dette plugin giver os mulighed for at tilpasse bygningens livscyklus på forskellige måder.

Et af dets mål er tilføjelseskilder, der er beregnet til at tilføje flere src-mapper til projektet under generere kilder fase.

Vi kan bruge det i vores projekt ved at føje det til vores pom.xml:

 org.codehaus.mojo build-helper-maven-plugin 3.0.0 generer-kilder tilføj-kilde src / main / another-src 

Den seneste version af pluginet kan findes i Maven Central.

Hvis vi nu kompilerer vores projekt, lykkes bygningen.

4. Konklusion

Vi har set i denne artikel, hvordan man konfigurerer Builder Helper Maven-plugin til at arbejde med flere src-mapper i et Maven-projekt.

Som altid er den fulde kildekode for eksemplerne tilgængelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found