java - proyecto - La mejor manera de crear un artefacto maven a partir de jarra existente
maven archetype catalog (5)
Estoy mavenizando algunos proyectos.
Todos estos proyectos dependen de varias bibliotecas, la mayoría de ellas están disponibles en el repositorio de Maven. Para las otras bibliotecas, me gustaría crear un artefacto de Maven, por lo que puedo usarlo como una dependencia. El problema es que solo tengo archivos jar de estas bibliotecas.
¿Cuál es la mejor manera de crear artefactos a partir de archivos jar existentes?
Como dijo Danben , tendrás que implementar estos archivos jar en un repositorio. Sin embargo, me parece entender por su pregunta que usted no tiene un repositorio, excepto el experto global.
Puedes usar Nexus , o Artifactory .
Conozco tu problema Mavenizar los tarros es a veces un dolor (especialmente si tienen otras dependencias transitivas, que también deben definirse en pom.xml).
¿Has comprobado si estas bibliotecas realmente nunca existen como deps de Maven? Echa un vistazo a los sospechosos habituales:
A veces me gusta usar el cuadro de diálogo de carga de Nexus jar para crear archivos pom.xml.
Puede usar el complemento de implementación de Maven para cargar su archivo JAR (y opcionalmente se creará un archivo POM, aunque de forma predeterminada se creará uno para usted) en su repositorio de Maven.
También puede crear dependencias de ''sistema'' en los archivos jar que no están en un repositorio que están en el proyecto. Por ejemplo,
<dependency>
<groupId>com.example</groupId>
<artifactId>MySpecialLib</artifactId>
<version>1.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/MySpecialLib-1.2.jar</systemPath>
</dependency>
Si no está utilizando un repositorio remoto (que es una situación común para el desarrollo personal), simplemente install
estos artefactos en su repositorio local usando el mojo de install:install-file
:
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
Where: <path-to-file> the path to the file to load
<group-id> the group that the file should be registered under
<artifact-id> the artifact name for the file
<version> the version of the file
<packaging> the packaging of the file e.g. jar
Pero obviamente, esto hará que tu compilación no sea portátil (aunque esto podría no ser un problema). Para no sacrificar la portabilidad, tendrá que hacer que los artefactos estén disponibles en un repositorio remoto. En un contexto corporativo, la forma común de lidiar con eso es instalar un repositorio empresarial (y en ese caso, deploy
los artefactos de hecho).
Actualización: una vez que su artefacto esté instalado en su repositorio local, simplemente declare un elemento <dependency>
en su pom como para cualquier otra dependencia, por ejemplo:
<dependency>
<groupId>aGroupId</groupId>
<artifactId>aArtifactId</artifactId>
<version>1.0.12a</version>
<packaging>jar</packaging>
</dependency>