Sto creando gli archetipi Maven 2 per il nostro progetto (Weld). Vorrei poter controllare quali file vengono inseriti nel progetto generato in base al valore di una proprietà definita durante archetype:generate
. Per esempio, prevedo il seguente messaggio:Come faccio a includere o escludere condizionatamente un file da un archetipo quando viene generato un progetto?
Define value for groupId: : com.example
Define value for artifactId: : myproject
Define value for package: com.example: :
Define value for includeGradleSupport: : y
Sulla base del valore di includeGradleSupport, voglio includere (o non includere) il file build.gradle
nel progetto generato. Se l'utente non desidera il supporto Gradle, non voglio ingombrare il progetto generato con file non necessari.
Un altro esempio è che potrebbe essere necessario fornire un frammento di Jetty per il web (per attivare forse un ascoltatore) se l'utente desidera il supporto di Jetty.
Si tratta di personalizzare il progetto in base a ciò che lo sviluppatore intende utilizzare. Mentre potrei creare un intero altro archetipo, a volte le modifiche sono così lievi che sarebbe più facile includere/escludere un file.
Esiste un modo per controllare questo comportamento utilizzando il descrittore archetype-metadata.xml
?
In base a questo problema: http://jira.codehaus.org/browse/ARCHETYPE-58 questa funzione è in arrivo. Ora abbiamo solo bisogno di vedere alcuni documenti (per quanto tempo potrebbe essere?) –
Ho lavorato su un progetto per un po 'che usava i profili per questo tipo di comportamento e andava male e le nostre build e poms erano estremamente complicate. Alla fine, siamo giunti alla conclusione che la cosa migliore da fare è impostare una nuova struttura di progetto in cui il nostro codice applicativo principale è stato azzerato e quindi le diverse configurazioni di implementazione erano configurazioni completamente diverse che dipendevano dal progetto principale. Questo crea un sacco di build e progetti, ma sono tutti semplici e facili da mantenere e hanno un singolo artefatto. –