¿Cómo instalar manualmente un artefacto en Maven 2?


96

Encontré algunos errores cuando intenté instalar un artefacto manualmente con Maven 2. Quería instalar un jar desde un directorio local con el comando

mvn install:install-file -Dfile=jta-1.0.1B.jar

Pero Maven dio un error de compilación que dice:

Invalid task '.01B.jar': you must
specify a valid lifecycle phase, or a
goal in the format plugin:goal or
pluginGroupId:pluginArtifactId:pluginVersion:goal

¿Hay algún error con mi comando?


¿Cuál es el estado de esto? ¿Tu pregunta está resuelta?
Matt

Respuestas:


147

Debe indicar el groupId, el artifactId y la versión de su artefacto:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dpackaging=jar \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true

8
-Dpackaging = falta jar o similar
kaboom

@kaboom ¡No! De forma predeterminada, el paquete es jar, por lo que no es necesario especificar esto en el comando ...
Romain Linsolas

5
@romaintaz kaboom es correcto; necesita -Dpackaging = jar (o el tipo que sea), de lo contrario, obtendrá un error sobre "falta 'empaquetado'".
Jack Edmonds

3
Parece que el parámetro de empaquetado es necesario, excepto si proporciona un archivo pom. En este último caso, el tipo de paquete se toma del pom.
Romain Linsolas

1
Si usa PowerShell, asegúrese de usar la cita de la misma manera"-DgroupId=javax.transaction"
ankitjaininfo

38

Según la Guía de maven para instalar JAR de terceros , el comando es:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

De hecho, necesita la opción de embalaje. Esto responde a la pregunta original.

Ahora, en su contexto, está luchando con un frasco proporcionado por Sun. También debería leer la página Cómo afrontar los JAR de Sun. Allí, aprenderá cómo ayudar a maven a brindarle mejor información sobre la ubicación de los tarros de Sun y cómo agregar el repositorio Java.net Maven 2 que contiene jta-1.0.1B.jar . Agregue esto en su settings.xml(no portátil) o pom.xml (portátil):

  <repositories>
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
      <layout>default</layout>
    </repository>
  </repositories>

13

Tuve que agregar empaque, entonces:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true \
  -Dpackaging=jar

Tuve muchos problemas al instalar un archivo jar manualmente y seguía fallando hasta que lo escribí de esta manera exactamente. ¡Ahora funciona!
Gregturn


4

Si alguna vez obtiene errores similares al usar Windows PowerShell, debe probar la línea de comandos simple de Windows. No descubrí qué causó esto, pero PowerShell parece interpretar algunos de los parámetros de Maven.


Mire la respuesta de S. Bollweber arriba. Y al menos TakeCommand expresa el mismo comportamiento.
Martin

1
No hay razón para rechazar mi respuesta - S. Bollweber respondió unos meses después que yo.
Koraktor

2

Todas las respuestas publicadas discuten correctamente esto desde una perspectiva estrictamente experta. Mi problema fue hacer esta instalación para maven usando Netbeans como mi IDE principal. Encontré útil el siguiente artículo.

Crédito al siguiente artículo del foro de netbeans: http://forums.netbeans.org/topic22907.html

  1. En el proyecto Maven, abra el cuadro de diálogo "Agregar dependencia"
  2. Invente algunos groupId, artifactId y version y rellénelos, de acuerdo.
  3. La dependencia se agregará al pom.xml y aparecerá en el nodo "Bibliotecas" del proyecto maven
  4. Haga clic con el botón derecho en el nodo Lib e "instalar manualmente el artefacto", complete la ruta al contenedor. Jar debe instalarse en el repositorio local de Maven con las coordenadas ingresadas en el paso 2)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.