Maven Install Plugin: Einzelne Datei installen ?

D

dodik4711

Gast
Hallo Leute,

habe mit Maven2 leider nicht viel Erfahrung und stehe zur Zeit vor einem Problem. Ich scheitere daran eine zusätzliche Datei in die lokale Repository zu "installieren".
Zum groben Verlauf: Ich habe eine Jar gebastelt, die auf eine native Bibliothek (*.so) zugreift, welche sich im gleichen Ordner befinden muss. Maven installiert die Jar natürlich ohne Probleme, aber die .SO Datei wird übergangen.

Ich benutze das Install-Plugin mit dem "install-file" goal und meine POM sieht folgendermaßen aus.
Java:
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.3.1</version>
        <executions>
            <execution>
               <phase>install</phase>
               <goals>
                 <goal>install-file</goal>
               </goals>
            </execution>
        </executions>
        <configuration>
           <file>Native.so</file>
           <repositoryLayout>default</repositoryLayout>
        </configuration>
</plugin>

Daraufhin erhalte ich folgenden Fehler.
Java:
[ERROR]Reason: The artifact information is incomplete or not valid:
[ERROR]  [0]  'groupId' is missing.
[ERROR]  [1]  'artifactId' is missing.
[ERROR]  [2]  'packaging' is missing.
[ERROR]  [3]  'version' is missing.
Dabei steht aber in der Plugin-Doku, dass diese Parameter optional seien.
Was mache ich also falsch?

Danke im Voraus
 
M

maki

Gast
Packaging ist optional, aber groupId, artifactId & Version gehören zu den grundsätzliche Maven2 Artifakt Koordinaten und müssen angegeben werden.
 
D

dodik4711

Gast
Also wenn ich alle Parameter angebe und nur "packaging" weglasse, wird trotzdem gemeckert.
Java:
[ERROR]Reason: The artifact information is incomplete or not valid:
[ERROR]  [0]  'packaging' is missing.
So langsam zweifle ich an mir selbst. Kann es sein, dass ich das Plugin missverstanden habe?
In der desctiption steht ja eindeutig : "Installs a file in the local repository."
Aber wieso muss ich groupId, artifactId usw. angeben? Es handelt sich hier ja nur um eine *.SO datei und kein Maven-Plugin/Projekt.
Oder wird aus den Parametern dann der Zielordner ermittelt?
 
M

maki

Gast
Packaging ist wohl doch nicht optional ;)

Alles was in einem Maven Repo liegt ist ein Artifakt, das Plugin generiert die notwedigen Infos aus deinen Angaben, also0 ohne GroupId, artifactId, version & offensichtlich packaging wird das nix.

Maven Dependecies sind immer Artifakte, sowas wie ein File ohne alles gibt es da nicht.
 
D

dodik4711

Gast
Danke für die schnelle Antwort.

Ist es denn nun möglich diese eine Datei in die Repo aufzunehmen, oder geht das Generell nicht bzw. nicht mit diesem Plugin ?
 
D

dodik4711

Gast
Übrigens bekomme ich natürlich eine andere Fehlermeldung, wenn ich "packaging" angebe.
Java:
[ERROR]The following mojo parameter cannot be configured:
[ERROR]Uneditable parameter:
[ERROR]Name: packaging
[ERROR]Alias: null
[ERROR]in mojo:
[ERROR]Group-Id: org.apache.maven.plugins
[ERROR]Artifact-Id: maven-install-plugin
[ERROR]Version: 2.3.1
[ERROR]Mojo: install
[ERROR]brought in via: packaging: jar
[ERROR]While building project:
[ERROR]Group-Id: de.mymaven.native
[ERROR]Artifact-Id: Native
[ERROR]Version: 1.0-SNAPSHOT
[ERROR]From file: /home/*******/NetBeansProjects/Native/pom.xml
[ERROR]Instead of configuring this parameter directly, try configuring your POM or settings.xml file.
[ERROR]Using the default-value and expression annotations built into the mojo itself, these values were found in your build:
[ERROR]Value: null
[ERROR]Using the expression:null
[ERROR]Value: null
[ERROR]Using the expression:null
[ERROR]If one of the above expressions rendered a valid value, it may give some indication of which part of the POM or settings.xml you can modify in order to change this parameter's value.

PS: Sry für Doppelpost
 
M

maki

Gast
Wenn du uns jetzt noch das Kommando verrätst dass den Fehler verursacht, könnte man versuchen zu helfen ;)
 
M

maki

Gast
Ok, hab wohl übersehen dass du versuchst eine Datei aus einer Pom hochzuladen, nicht von der Kommandozeile aus.
Das Plugin das du dafür brauchst ist der maven-build-helper (attach).
 
D

dodik4711

Gast
Hmm, also dieses Plugin macht auch nicht was ich will. Zwar ist in den Usage-Beispielen genau der richtige Fall aufgelistet, doch bei mir passiert da nichts.

Die POM Datei sieht folgendermaßen aus.

Java:
<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <id>attach-artifacts</id>
            <phase>install</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <configuration>
              <basedir>${project.build.directory}</basedir>
              <artifacts>
                <artifact>
                  <file>Native</file>
                  <type>so</type>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
 </plugin>

Ich bekomme keinerlei Fehlermeldung oder sonstiges. Das Plugin wird zwar aufgerufen, aber es passiert einfach nichts. Das kann doch nicht so schwer sein, oder? So langsam denke ich darüber nach einfach ein Bash-Script zu schreiben. :(
 
M

maki

Gast
Wie startest du den Build denn?
Denke du solltest kein basedir angeben, dein Basdir ist übrigens dort, wo deine pom.xml liegt, nicht das target ;)
 
D

dodik4711

Gast
Also ich benutze Netbeans 6.9 und soweit ich weis macht Netbeans immer einen "Clean & Build".
Wenn ich das Ziel von "install" auf "package" ändere und den absoluten Pfad zur Datei angebe passiert tatsächlich was. Die Datei wird in die Repo kopiert aber nun kommt das nächste Problem. Datei Native.so wird, aus welchen Gründen auch immer, in Native-1.0-SNAPSHOT.so umbenannt.
Java:
[build-helper:attach-artifact]
[#install]
[install:install]
Installing /home/*****/NetBeansProjects/Native/target/Native-1.0-SNAPSHOT.jar to /home/*****/.m2/repository/com/myapp/Native/1.0-SNAPSHOT/Native-1.0-SNAPSHOT.jar
Installing /home/*****/NetBeansProjects/Native/target/Native.so to /home/*****/.m2/repository/com/myapp/Native/1.0-SNAPSHOT/Native-1.0-SNAPSHOT.so

PS: Die POM sieht nun folgendermaßen aus.
Java:
<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <id>attach-artifacts</id>
            <phase>package</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <configuration>
              <artifacts>
                <artifact>
                  <file>${project.build.directory}/Callbacks64.so</file>
                  <type>so</type>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
 </plugin>
 
M

maki

Gast
Dann war das Basedir der Fehler ;)

"mvn clean install " solltest du in Multimodulprojekten immer nutzen, "mvn package" reicht nicht.

Wenn ich das Ziel von "install" auf "package" ändere und den absoluten Pfad zur Datei angebe passiert tatsächlich was. Die Datei wird in die Repo kopiert aber nun kommt das nächste Problem. Datei Native.so wird, aus welchen Gründen auch immer, in Native-1.0-SNAPSHOT.so umbenannt.
Das ist kein Problem, das ist richtig so und folgt den maven konventionen.
Wenn du es anders brauchst musst die die Datei im refrerezierenden Projekt kopieren & umbenennen.
 
D

dodik4711

Gast
Hmm, und einen anderen Weg gibt es nicht?

Das Problem ist, dass da noch ein paar native Bibs dazukommen und wenn sie bei jeder Versionsänderung einen anderen Namen haben wird es nicht sehr lustig.
 
M

maki

Gast
Die Maven Koordinaten haben wir ja schon durchgenommen ;)

Mir ist nicht klar warum du den Buildhelepr nutzt um die SO zu attachen, wird die SO denn von diesem Projekt auch erstellt(Im Sinne von kompiliert/gebaut)?
Wenn nein, dann ist der Weg über den Buildhelper nicht richtig, sondern eine eigene POM die nur eine bzw. mehrere SO hochlädt, dann ändert sich auch die Versionsnummer nicht mehr grundlos.

Wenn sich die SOs nie ändern wäre es eine Überlegung wert die SOs einfach in den Repo-Manager (Aertifactory/Nexus) hochzuladen.
 

kama

Top Contributor
Hallo,

um ein .so zu Nutzen solltest Du dir das Maven-Nar-Plugin auf Github anschauen...das ermöglich shared libraries etc. zu bauen und auch per Maven direkt ins repository zu installieren und was noch besser ist für anderen Projekte (C++ etc.) zur Verfügung zu stellen...

Gruß
Karl Heinz Marbaise
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Maven Dependencies beim install mit in die Jar einbinden Tools - Maven, Gradle, Ant & mehr 6
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
H Maven build.plugins.plugin.version fehlt Tools - Maven, Gradle, Ant & mehr 0
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
J Gradle signing Plugin Tools - Maven, Gradle, Ant & mehr 0
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
H Jenkins aktulles Checkstyle Plugin Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
C while Schleife in Plugin stoppt nicht Tools - Maven, Gradle, Ant & mehr 23
D [ERLEDIGT] Probleme mit Authorization in Nexus und mvn deploy plugin Tools - Maven, Gradle, Ant & mehr 1
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
HaukeG Maven Suche nach Ideen für Realisierung eines eigenen Plugin Tools - Maven, Gradle, Ant & mehr 3
H Maven Tycho [ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.14.1:validate-vers Tools - Maven, Gradle, Ant & mehr 8
L Maven Unable to download maven-copy-plugin Tools - Maven, Gradle, Ant & mehr 10
Chris81T Maven Hilfe bei EAR packaging mit maven-ear-plugin Tools - Maven, Gradle, Ant & mehr 1
maestr0 Maven Plugin Entwicklungs Buch für Einsteiger Tools - Maven, Gradle, Ant & mehr 8
D [maven] problem mit konfiguration von cargo plugin Tools - Maven, Gradle, Ant & mehr 4
D [Maven] problem mit plugin - es fehlen "dubug informationen" Tools - Maven, Gradle, Ant & mehr 8
S Maven pom.xml, Error: Plugin execution not covered by lifecycle configuration Tools - Maven, Gradle, Ant & mehr 3
E Maven maven-jaxb2-plugin proxy Tools - Maven, Gradle, Ant & mehr 4
K MAVEN Plugin erzeugen Tools - Maven, Gradle, Ant & mehr 7
C Buckminster + plugin tests Tools - Maven, Gradle, Ant & mehr 3
B Maven Shared plugin konfiguration ? Tools - Maven, Gradle, Ant & mehr 3
D gwt-maven-plugin und Eclipse Tools - Maven, Gradle, Ant & mehr 1
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
B Maven build-helper-maven-plugin mit Eclipse Tools - Maven, Gradle, Ant & mehr 3
M eigenes Plugin erstellen Maven Tools - Maven, Gradle, Ant & mehr 4
S Maven Profiles - maven-exec-plugin Tools - Maven, Gradle, Ant & mehr 4
S Maven Webstart Plugin Tools - Maven, Gradle, Ant & mehr 7
P Maven Release Plugin - überschreiben der POM verhindern? Tools - Maven, Gradle, Ant & mehr 5
T Failed to configure plugin parameters Tools - Maven, Gradle, Ant & mehr 8
J Maven Assembly-Plugin und Dependencies Tools - Maven, Gradle, Ant & mehr 4
U Maven2 WAR Plugin doppelte Dependencies Tools - Maven, Gradle, Ant & mehr 4
M maven-jaxb-plugin Tools - Maven, Gradle, Ant & mehr 1
Z Java-Plugin-Einstellung bei Internet-Explorer Tools - Maven, Gradle, Ant & mehr 1
G Applet braucht eine bestimmte Plugin-Version Tools - Maven, Gradle, Ant & mehr 11
C Java Plugin ??? Tools - Maven, Gradle, Ant & mehr 4
K IE + Sun PlugIn + JAR + Zugriff per file:/ geht nicht mehr Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
D (MouseListener im Applet?) einzelne Komponenten neuzeichnen? Tools - Maven, Gradle, Ant & mehr 10

Ähnliche Java Themen

Neue Themen


Oben