tutorial que pom mvn homepage fases consola conceptos comandos clean basicos java maven-2 dependencies classpath

java - pom - mvn clean install que es



Lista de archivos jar de dependencia en Maven (7)

Usando Maven 2, ¿hay alguna manera de enumerar las dependencias de jar como solo los nombres de archivo?

mvn dependency:build-classpath

puede listar los archivos jar, pero eso incluirá la ruta completa a su ubicación en mi repositorio local. Lo que necesito es esencialmente solo una lista de los nombres de los archivos (o los nombres de los archivos copiados del objetivo de copia-dependencias).

Entonces la lista que necesito sería algo así como

activation-1.1.jar,antlr-2.7.6.jar,aopalliance-1.0.jar etc...

idealmente como una propiedad maven, pero supongo que un archivo como build-classpath puede generar.

Lo que intento lograr es escribir un Bundle-ClassPath en un archivo MANIFEST.MF mantenido de otra manera para un paquete OSGi. (No debería necesitar entender este bit para responder la pregunta).

Para aclarar: la pregunta no es sobre cómo escribir encabezados de manifiesto en el archivo MANIFEST.MF en un jar (que es fácilmente googleble). Estoy preguntando cómo obtener los datos que quiero escribir, es decir, la lista que se muestra arriba.


¿Has mirado el proyecto Apache Felix ? Tiene un lío completo de complementos, incluido un complemento de paquete que debe hacer lo que desee.

Además, ¿ha probado la etiqueta <addClasspath> con <manifestFile> ? Eso debería tener el efecto deseado de fusionar el classpath en tu manifiesto.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> ... <configuration> <archive> <addClasspath>true</addClasspath> <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> ... </plugin>



Lo mejor que puedo decir es que no se puede obtener exactamente esa salida, con las comas y sin espacios. Tanto a través de la línea de comando como a través del archivo pom.xml, maven-dependency-plugin o CLI se asusta si especifica espacios o el '''' (cadena vacía) como sustituto con pathSeparator o fileSeparator . Por lo tanto, puede verse obligado a llegar a un compromiso. Usted puede

mvn dependency:build-classpath -Dmdep.pathSeparator=":" -Dmdep.prefix='''' -Dmdep.fileSeparator=":" -Dmdep.outputFile=classpath

Sin embargo, eso debería proporcionarle una lista completa, separada por ''::'' lugar de simplemente '','' , pero funciona. Si tu corres:

mvn dependency:build-classpath -Dmdep.pathSeparator="@REPLACEWITHCOMMA" -Dmdep.prefix='''' -Dmdep.fileSeparator="@" -Dmdep.outputFile=classpath

y adjuntar esto a la fase de generate-resources y filtrar ese recurso más tarde estableciendo la propiedad correcta en la fase de process-resources de proceso del ciclo de vida, debería poder obtener solo la coma.

Puede ver la lista completa de opciones en: http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html


Me puede estar perdiendo algo aquí, pero como ya has usado las dependencias de copia, parece que lo que realmente buscas es solo una lista de archivos en un directorio específico.

Ant puede hacer esto por usted sin ningún problema, al igual que un script de shell.


Este comando generará el árbol de dependencias de su proyecto de maven:

$ mvn dependency:tree

Estoy seguro de que te gustará el resultado :-)


Para agregar una muesca a las respuestas existentes, el complemento maven-dependency actual permite guardar el classpath en una propiedad con el parámetro outputProperty .


Aquí está el comando que está pidiendo

$ mvn dependency:tree

Para proyectos grandes, puede generar una gran cantidad de texto. Supongo que desea verificar que el árbol de dependencias contenga cierta dependencia, por lo que no necesita una lista completa.

A continuación, le mostramos cómo puede filtrar la salida en Windows:

$ mvn dependency:tree | findstr javax.persistence

Y he aquí cómo puedes hacerlo en Linux:

$ mvn dependency:tree | grep javax.persistence