Tworzę wtyczkę Mavena z dość unikatowym warunkiem prawidłowego działania: musi ona odradzać nowe procesy, a następnie czekać na wykonanie tych procesów.Proces rozwidlenia wtyczki Mavena z właściwą ścieżką Classpatha
Mimo że jest to dość trywialne zadanie w linii poleceń, wtyczki Maven nie są wywoływane w taki sam sposób, jak tradycyjny kod Java i dlatego nie ma ścieżki klasy. Nie mogę się dowiedzieć, jak rozwiązać właściwą ścieżkę klas wewnątrz wtyczki, tak, że mogę odrodzić nową maszynę JVM (wywołując metodę Main innej klasy wewnątrz wtyczki).
Korzystanie obecny artefaktu MavenProject
jestem w stanie uzyskać Artifact
odniesienie do siebie (plugin) i dostać to względny katalog wewnątrz lokalnego repozytorium Maven:
Artifact self = null;
for (Artifact artifact : project.getPluginArtifacts()) {
if ("my-group-id".equals(artifact.getGroupId()) && "my-artifact-id".equals(artifact.getArtifactId())) {
self = artifact;
break;
}
}
if (self == null) {
throw new MojoExecutionException("Could not find representation of this plugin in project.");
}
for (ArtifactRepository artifactRepository : project.getPluginArtifactRepositories()) {
String path = artifactRepository.pathOf(self);
if (path != null) {
getLog().info("relative path to self: " + path);
break;
}
}
Jak uzyskać odniesienie do wszystkich jego zależności (i zależności przechodnie), że mogę skonstruować pełną ścieżkę klas dla nowego wywołania? Widzę, że self
ma filtr zależności, ale nie wiem, gdzie go zastosować.
Czy to właściwy sposób na stworzenie nowego procesu "siebie" wewnątrz wtyczki? Czy istnieje lepszy sposób?
Usługa innej firmy, z którą współpracuję, pozwala tylko na jedno połączenie na proces i wykonanie ich seryjnie nie jest opcją. Będę potrzebował od 5 do 20 interakcji w jednym uruchomieniu tej wtyczki. Zbadam Twoje sugestie później, dzięki. –