Frage

Ich versuche, einen benutzerdefinierten Maven Wagen Erweiterung zu verwenden, um ein Glas zu meinem eigenen Repository zu implementieren. Kann ich irgendwie in settings.xml konfigurieren, dass es die benutzerdefinierte URL-Schema erkennt mit dem spezifischen Wagen verwendet werden, oder muss ich immer pom-Dateien zu ändern, um den Wagen Erweiterung enthalten?


Es braucht keine Basis pom pom oder jede Verfügung zu stehen, wenn die deploy-Datei. Settings.xml ist der einzige Ort, die dort zu sein ist garantiert, aber ich kann nicht herausfinden, wie es zu benutzen Erweiterungen zu definieren.

War es hilfreich?

Lösung

OK, ok, eine Korrektur: Sie <build> Element innerhalb eines <profile> nicht definieren kann in settings.xml definiert. Sie könnten das Profil in settings.xml, aktivieren aber es in Ihrem base-pom definieren.

Sorry, die einzige andere Art, wie ich denken konnte (wahrscheinlich das, was suchen Sie), ist die Erweiterung jar direkt unter $M2_HOME/lib zu kopieren. All $M2_HOME/lib/*.jar sind in dem Classpath setzen, so muss dies praktisch die gleiche Wirkung wie eine <extension> hat.

Die Erweiterung ist jedoch besser, da Sie leichter, welche Version der Erweiterung verwendet wird, steuern kann (zum Beispiel die Basis-pom Trog).

OK nur versuchen, das Kopieren der Erweiterung jar unter

    $M2_HOME/lib

Andere Tipps

Ich weiß nicht, ob die Kommentar oben von Brian Fox im Jahr 2013. Aber am Ende noch gültig ist, ich hatte eine minimale pom.xml in dem Verzeichnis zu erstellen, wo ich das Artefakt zu laden versucht, den Wagen zu bauen Erweiterung zu ermöglichen.

Ich hatte groupId, artifactId und Version auf die pom.xml hinzufügen, so dass Maven nicht beklagen, obwohl ich sie zum Ziel auf der Kommandozeile deploy-Datei zur Verfügung gestellt (ich denke, deploy-Datei nur wenn über die Kommandozeilenparameter kümmern würde ):

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<groupId>your-groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>your-version</version>
<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>2.4</version>
    </extension>
  </extensions>
</build>
</project>

Mit diesem einfachen „pom.xml“ an Ort und Stelle ich die deploy-Datei ausführen konnte schließlich scp als Protokoll:

mvn deploy:deploy-file -Durl=scp://shell.sourceforge.net:/home/project-web/... -DrepositoryId=repoId -Dfile=my-file.jar -DgroupId=your-groupId -DartifactId=your-artifactId -Dversion=your-version -Dpackaging=jar

Sie müssen den Wagen Erweiterung Ihrer Top-Level hinzufügen pom.xml . Die meisten Umgebungen haben ein Unternehmen einen an der Spitze aller ihre Projekte (Best Practice), so ist dies im Allgemeinen nicht zu schmerzhaft für einzelne Entwickler -. Sie nur aus dem Firmen pom erbt

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-scm</artifactId>
      <version>1.0-alpha-7-SNAPSHOT</version>
    </extension>
    <extension>
      <groupId>org.apache.maven.scm</groupId>
      <artifactId>maven-scm-manager-plexus</artifactId>
      <version>1.0-beta-3-SNAPSHOT</version>
    </extension>
    <extension>
      <groupId>org.apache.maven.scm</groupId>
      <artifactId>maven-scm-provider-svnexe</artifactId>
      <version>1.0-beta-3-SNAPSHOT</version>
    </extension>
  </extensions>
</build>
<distributionManagement>
  <site>
    <id>my.svn.server</id>
    <url>scm:svn:https://username@svn.apache.org/svn/root/module</url>
  </site>
</distributionManagement>

Wenn Sie Ihren Provider registrieren, registriert auch das Protokoll Muster als auch glaube ich. Sie können eine vollständige Liste der vorhandenen Anbieter sehen hier .

Ich glaube, es ist der getScmType () -Methode, die die Erweiterung registriert, aber ich bin nicht 100% sicher.

/** {@inheritDoc} */
public String getScmType()
{
    return "git";
}

Der Link auf die Quelle des Git-Anbieter finden Sie hier.

siddhadev ist richtig, aber es gibt einige zusätzliche Dinge ... (I in einem Kommentar setze dies würde aber ich habe nicht genug Ruf)

Sie können Ihre JAR-Dateien halten sauber getrennt, indem sie unter setzen:   $ M2_HOME / lib / ext

Sie müssen alle Abhängigkeiten, so etwas wie:

  1. cd ~ / .m2 / repository / org / apache / Maven / Wagen / Wagen ssh-extern / 2.2
  2. cp wagon-ssh-external-2.2.jar $ M2_HOME / lib / ext
  3. cp wagon-ssh-external-2.2.pom pom.xml
  4. MVN Abhängigkeit: copy-Abhängigkeiten -DoutputDirectory = $ M2_HOME / lib / ext
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top