4 Stimmen

Gibt es eine Variable in Maven, die das aktuelle Ziel enthält?

Um das Maven invoker-Plugin mit dem gleichen Goal aufzurufen, das gerade in meinem uber-pom läuft, benötige ich eine Möglichkeit, das aktuelle Goal in der Konfiguration des invoker-Plugins zu übergeben.

So etwas wie

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-invoker-plugin</artifactId>
        ...
        <configuration>
          <goals>
            <goal>${maven.goal}</goal>
          </goals>
        ...

1voto

Matthew McCullough Punkte 16494

El Maven-Hilfe-Plugin könnte Ihnen helfen Ihr Ziel erreichen . Die Variable ${reactorProjects} enthält, was Sie suchen, aber vielleicht nicht genau in dem Format, in dem Sie es wiederverwenden möchten.

Sie können sich alle Ausdrücke verfügbar für Sie über:

mvn help:expressions

und dann können Sie einen von ihnen ohne die Mühsal eines Pom durch Auswertung zu testen :

mvn help:evaluate

die Sie zu einer Eingabeaufforderung führt, mit der Sie Ausdrücke ausprobieren können.

Wenn ich help:evaluate verwende und ${reactorProjects} eingebe, erhalte ich eine Menge Ausgaben, von denen ein Teil die von Ihnen gewünschten Daten enthält:

<plugins>
  <plugin>
    <inheritanceApplied>true</inheritanceApplied>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-help-plugin</artifactId>
    <version>2.1</version>
    <extensions>false</extensions>
    <dependencies/>
  </plugin>
</plugins>
<pluginMap class="linked-hash-map">
  <entry>
    <string>org.apache.maven.plugins:maven-help-plugin</string>
    <plugin reference="../../../plugins/plugin"/>
  </entry>
</pluginMap>

0voto

Karl Olson Punkte 1

Ich habe die folgende Abhängigkeit hinzugefügt:

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-core</artifactId>
  <version>3.0.3</version>
</dependency>

Und dann in meinem MOJO:

import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenSession;
...
@Parameter(defaultValue = "${session}", readonly = true)
private MavenSession session;

Schließlich gelang es mir, die aktuellen Ziele zu ermitteln:

MavenExecutionRequest executionRequest = session.getRequest();
List<String> goals = executionRequest.getGoals();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X