Come installare manualmente un artefatto in Maven 2?


96

Ho riscontrato alcuni errori quando ho provato a installare un artefatto manualmente con Maven 2. Volevo installare un jar da una directory locale con il comando

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

Ma Maven ha fornito un errore di compilazione che si legge come:

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

C'è un errore con il mio comando?


Qual è lo stato di questo? La tua domanda è stata risolta?
Matt il

Risposte:


147

Devi indicare groupId, artifactId e la versione per il tuo artefatto:

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 = jar o simile mancante
kaboom

@kaboom No! Per impostazione predefinita, la confezione è jar, quindi non è necessario specificarlo nel comando ...
Romain Linsolas

5
@romaintaz kaboom è corretto; hai bisogno di -Dpackaging = jar (o qualunque sia il tipo) altrimenti otterrai un errore su "'packaging' is missing."
Jack Edmonds

3
Sembra che il parametro packaging sia necessario tranne se fornisci un file pom. In quest'ultimo caso, il tipo di confezione è preso dal pom.
Romain Linsolas

1
Se si utilizza PowerShell, assicurarsi di utilizzare le virgolette allo stesso modo"-DgroupId=javax.transaction"
ankitjaininfo

38

Secondo la guida di Maven all'installazione di JAR di terze parti , il comando è:

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

Hai davvero bisogno dell'opzione di imballaggio. Questo risponde alla domanda originale.

Ora, nel tuo contesto, stai combattendo con un barattolo fornito da Sun. Dovresti leggere anche la pagina Come affrontare i Sun JAR . Lì imparerai come aiutare Maven a fornirti migliori informazioni sulla posizione dei vasi Sun e come aggiungere il repository Java.net Maven 2 che contiene jta-1.0.1B.jar . Aggiungi questo nel tuo settings.xml(non portatile) o pom.xml (portatile):

  <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

Ho dovuto aggiungere l'imballaggio, quindi:

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

Ho avuto molti problemi con l'installazione manuale di un file jar e ha continuato a fallire finché non l'ho digitato esattamente in questo modo. Ora funziona!
gregturn


4

Se si verificano errori simili durante l'utilizzo di Windows PowerShell, provare la semplice riga di comando di Windows. Non ho scoperto cosa lo abbia causato, ma PowerShell sembra interpretare alcuni dei parametri di Maven.


Guarda la risposta di S. Bollweber sopra. E almeno TakeCommand esprime lo stesso comportamento.
Martin

1
Nessun motivo per sottovalutare la mia risposta - S. Bollweber ha risposto pochi mesi dopo me stesso.
Koraktor

2

Tutte le risposte pubblicate ne discutono giustamente da una prospettiva strettamente esperta. I miei problemi erano nel fare questa installazione per Maven usando Netbeans come IDE principale. Ho trovato utile l'articolo qui sotto.

Ringraziamo il seguente articolo del forum di netbeans: http://forums.netbeans.org/topic22907.html

  1. Nel progetto Maven aprire la finestra di dialogo "Aggiungi dipendenza"
  2. Crea un groupId, un artifactId e una versione e riempili, OK.
  3. La dipendenza verrà aggiunta a pom.xml e apparirà nel nodo "Librerie" del progetto maven
  4. Fare clic con il tasto destro del mouse sul nodo Lib e "installa manualmente artefatto", riempire il percorso del jar. Jar dovrebbe essere installato nel repository Maven locale con le coordinate inserite nel passaggio 2)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.