2016-03-29 12 views
2

Ich möchte gut Situation erkennen, wenn Maven-Plugin von Maven-Projekt ausgeführt wird oder nicht, weil ich andere Standardparameter benötigen, wenn die Ausführung außerhalb von Maven-Projekt ist.Howto erkennen, dass Maven Plugin innerhalb Maven-Projekt ausgeführt wird?

Ich kann @Component MavenProject project in Plugin Mojo injizieren, aber das ist auf test:test:jar:1 gesetzt, wenn es keine pom.xml gibt.

Ich kann Basisverzeichnis @Parameter(defaultValue = "${basedir}") File baseDir injizieren und auf pom.xml Datei prüfen, aber das riecht (mit polyglot maven gibt es keine pom.xml mehr).

Wie überprüft man, ob das Projekt innerhalb oder außerhalb des Maven-Projekts ausgeführt wird?


Ich habe ein bestimmtes Ziel und ich möchte das gleiche Ziel für beide Situationen verwenden.

Antwort

1

Ich fühle, dass die Frage nicht genug beantwortet wird. Mein Vorschlag ist:

@Component 
private MavenSession mavenSession; 

boolean insideMavenProject = mavenSession.getRequest().isProjectPresent() 
+0

Danke, warum dieser Code 'maven-compat' als verfügbare Abhängigkeit benötigt? – MariuszS

+0

@MarianzS, ich bin nicht vertraut mit Maven-Kompat. Mein Plugin hängt von maven-plugin-annotations 3.4 und maven-core 3.3.3 ab – michaldo

1

Das Wichtigste ist, dass man eindeutig eine Entscheidung treffen, das Ziel von CLI verwendet werden sollte nur, und die in der pom-Datei ... Die grundlegende Entscheidung unter Verwendung der folgenden hergestellt werden kann verwendet werden sollen:

@Mojo(name = "xxxx", requiresProject = true,...) 

so die requiresProject bedeutet, dass Sie eine pom.xml haben müssen, was bedeutet, dass kein Anruf über CLI.

Wenn Sie dies auslassen, können Sie die Möglichkeit geben, ein Ziel von CLI zu verwenden. Also am besten ist ein Ziel zu verwenden, die für den Aufruf von CLI und einem anderen Ziel bestimmt ist, die dazu bestimmt ist, von der pom.xml verwendet werden ..

Des Weiteren ein MavenProject injizieren Sie dies wie folgt tun sollte:

Ursache ein MavenProject ist kein @Component. Abgesehen davon verstehe ich Ihre Informationen über test:test:jar:1 immer nicht ... und was mich interessiert ist, welche Art von Plugin Sie versuchen zu schreiben?

+0

Plugin https://github.com/Codearte/accurest-maven-plugin/tree/master/maven-plugin, ich will 'generateStubs' ohne Maven Projekt auszuführen. Injected MavenProject hat MavenModel: 'test: test: jar: 1', wenn keine pom.xml vorhanden ist. – MariuszS

Verwandte Themen