Come faccio ad accedere alle proprietà Maven definite nel pom in un normale progetto di Maven, e in un progetto di plugin di Maven?di accesso definiti nel pom
risposta
È possibile analizzare il file pom con JDOM (http://www.jdom.org/).
Maven ha già una soluzione per fare quello che vuoi:
Get MavenProject from just the POM.xml - pom parser?
btw: prima colpito alla ricerca google;)
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
reader = new FileReader(pomfile); // <-- pomfile is your pom.xml
model = mavenreader.read(reader);
model.setPomFile(pomfile);
}catch(Exception ex){
// do something better here
ex.printStackTrace()
}
MavenProject project = new MavenProject(model);
project.getProperties() // <-- thats what you need
Le risposte single-link sono scoraggiate qui (soprattutto perché possono diventare inutili quando la risorsa collegata a) va via). Dovresti almeno riassumere le informazioni dal link da pubblicare qui. –
Ho accidentalmente postato il link sbagliato, il suo un post StackOverflow, che non dovrebbe andare via;) – SWoeste
Ma sono d'accordo che si briciolo, solo un link è un po 'sgradevole. Quindi, in base alla sorgente del link, ho aggiunto alcuni commenti e la chiamata al metodo che stai cercando (ultima riga). – SWoeste
Questo può essere fatto con le proprietà standard di Java in combinazione con il plugin maven0-resource con filtro abilitato sulle proprietà. Per maggiori informazioni visita
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
Questo funziona per il progetto Maven standard, come per il plugin proietta
Impostare un System variable from Maven e in uso java following call
System.getProperty("Key");
collegamento interrotto, puoi sistemarlo? –
risolto il collegamento interrotto. – Santosh
Funzionerà solo se stai eseguendo la build risultante da Maven, forse usando il plugin maven-exec-plugin. Se stai usando Maven per compilare il codice, questo non funzionerà. –
Utilizzare il properties-maven-plugin di scrivere specifica pom properties
in un file in fase di compilazione, quindi leggere il file in fase di esecuzione.
Nella tua pom.xml:
<properties>
<name>${project.name></name>
<version>${project.version}</version>
<foo>bar</foo>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>${project.build.outputDirectory}/my.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
E poi nel .java:
java.io.InputStream is = this.getClass().getResourceAsStream("my.properties");
java.util.Properties p = new Properties();
p.load(is);
String name = p.getProperty("name");
String version = p.getProperty("version");
String foo = p.getProperty("foo");
Questo ha funzionato, ma ha fatto ricadere Eclipse in ** loop infinito build/deploy-to-Tomcat ** (build -> generate my.properties -> resource changed -> build), quindi ho dovuto cambiare fase in 'compile'. Non sono sicuro se sia la soluzione adeguata però. –
@atoregozh suggerisce di usare Guava Resource per caricare il file delle proprietà. OK. Ma abbiamo ripristinato le modifiche per mantenere questo esempio minimo con le API standard. –
- 1. funzione friend di accesso definiti in classe
- 2. Proprietà del sistema di accesso Maven entro pom
- 3. Riferimenti non definiti nel makefile
- 4. Accesso alle variabili Maven Pom dal file delle proprietà
- 5. Dipendenze Maven POM nel file ivy.xml
- 6. Efficace-pom una fusione tra super pom e applicazione POM
- 7. come ottenere parametri definiti nel file jasper?
- 8. Aggiungere campi definiti dall'utente nel dizionario FIX
- 9. restituire valori come non definiti nel nodo
- 10. $ Non timeout definiti errore nel AngularJS app
- 11. Maven Super POM
- 12. Come installo un POM nel mio repository m2 locale?
- 13. Come condividere i frammenti POM tra diverse POM
- 14. Maven esclude il plugin definito nel genitore pom
- 15. pom Capogruppo e microservices
- 16. Come escludere la directory nel mapping di rpm nel file pom?
- 17. Come fa il mio pom trovare il mio genitore se i repository sono configurati nel pom principale?
- 18. crea POM con junit 4
- 19. Dipendenze aggiornamento Maven in POM
- 20. Come aggirare "più simboli definiti" nel collegamento con gcc
- 21. gradle genitore pom come caratteristica
- 22. Campi di accesso nel modello intermedio Django
- 23. Accesso alle risorse nel pod
- 24. String letterali definiti dall'utente vs. Altri letterali definiti dall'utente
- 25. Non ho accesso al container nel mio controller
- 26. Maven non trova genitore POM
- 27. Maven: genitore non risolvibile POM
- 28. Posso includere la distribuzione mvn: deploy-file nel pom o settings.xml invece di cli goal
- 29. artefatto: installa spinge il super-pom invece del POM che definisco
- 30. Gtest: riferimenti non definiti
Che tipo di informazioni ti interessano? Se sono solo versioni o cose simili, probabilmente è un'idea migliore per [inserirla nel file manifest e leggerla da lì] (http://stackoverflow.com/questions/2712970/how-to-get-maven-artifact- versione-at-runtime/2713013 # 2713013). –
C'è un sacco di post in Stack Overflow su questo: http://stackoverflow.com/search?q=read+pom+in+java, almeno, date un'occhiata prima di postare. COSÌ gli aiutanti di modifica dovrebbero mostrarli. Anche a Google –
Grazie ragazzi. Ora mi rendo conto che questa è una pessima pratica. Proveremo un altro approccio –