Używam Mavena w kontekście innego narzędzia do budowania (leiningen dla Clojure, ale to nie powinno mieć znaczenia), i chciałbym wiedzieć, jak nazwałbym wtyczkę taką jak dependency:build-classpath programowo (tj. poprzez Maven-API, a nie przez mvn
-polecenie).Jak programowo zadzwonić do Mavena-task
13
A
Odpowiedz
3
Zobacz, jak zaimplementowano org.apache.maven.plugin.testing.AbstractMojoTestCase z pakietu testowego. Oto fragment kodu z niektórych moich testów, które mogą być pomocne.
public abstract class JAXBGenerateTest extends AbstractMojoTestCase {
static {
System.setProperty("basedir", getBaseDir().getAbsolutePath());
}
protected MavenProjectBuilder mavenProjectBuilder;
protected void setUp() throws Exception {
super.setUp();
mavenProjectBuilder = (MavenProjectBuilder) getContainer().lookup(
MavenProjectBuilder.ROLE);
}
protected static File getBaseDir() {...}
/**
* Validate the generation of a java files from purchaseorder.xsd.
*
* @throws MojoExecutionException
*/
public void testExecute() throws Exception {
final File pom = new File(getBaseDir(),
"src/test/resources/test-pom.xml");
final ArtifactRepository localRepository = new DefaultArtifactRepository("local",
new File(getBaseDir(), "target/test-repository").toURI().toURL().toString() , new DefaultRepositoryLayout());
final MavenProject mavenProject = mavenProjectBuilder.build(pom, localRepository, null);
final XJC2Mojo generator = (XJC2Mojo) lookupMojo("generate", pom);
generator.setProject(mavenProject);
generator.setLocalRepository(localRepository);
generator.setSchemaDirectory(new File(getBaseDir(),"src/test/resources/"));
generator.setSchemaIncludes(new String[] { "*.xsd" });
generator.setBindingIncludes(new String[] { "*.xjb" });
generator.setGenerateDirectory(new File(getBaseDir(), "target/test/generated-sources"));
generator.setVerbose(true);
generator.setGeneratePackage("unittest");
generator.setRemoveOldOutput(false);
generator.execute();
}
}
0
Ant Maven tasks może dać ci pomysł, jak to zrobić (DependenciesTask source). Inną drogą może być PomModuleDescriptorParser używana przez Ivy.
7
Oto lepsze rozwiązanie: użyć biblioteki Mojo-Executor. Ujawnia prosty API Java do wywoływania wtyczek Mavena.
13
Użyj Maven Invoker API. Jest szybki i łatwy.
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File("/path/to/pom.xml"));
request.setGoals(Collections.singletonList("install"));
Invoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File("/usr"));
try
{
invoker.execute(request);
}
catch (MavenInvocationException e)
{
e.printStackTrace();
}
pom.xml:
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-invoker</artifactId>
<version>2.1.1</version>
</dependency>
+0
To rozwidla nowy cykl życia. TFQ próbuje wywołać mojo w bieżącym cyklu życia. –
Powiązane problemy
- 1. Jak zatrzymać SSIS od "Zadzwonić do domu"
- 2. Jak zadzwonić do NSBeep z Delphi
- 3. Jak mogę zadzwonić do VBscript z Javascriptu
- 4. jak zadzwonić @ app.before_request
- 5. poświadczeń do WMI zadzwonić VBScript
- 6. Android - kiedy zadzwonić do db.setTransactionSuccessful()?
- 7. nawrócony curl zadzwonić do java URLConnection rozmowy
- 8. Czy DAO może zadzwonić do DAO?
- 9. Overhead Java JNI zadzwonić
- 10. AngularJS: Z fabryki, jak mogę zadzwonić do innej funkcji
- 11. Jak mogę zadzwonić do funkcji kroków AWS przez bramkę API?
- 12. jak zadzwonić z GWT do Google Cloud Endpoint
- 13. Jak mogę zadzwonić do oryginalnego "operatora new", jeśli go przeciąłem?
- 14. nie onActivityResult zadzwonić Fragment
- 15. Wordpress jak zadzwonić shortcode w szablonie
- 16. Jak zdobyć identyfikatory z ormlite SaveAll() zadzwonić
- 17. Jak mogę zadzwonić setter właściwości z __init__
- 18. jak zadzwonić platformy konkretną stronę z xamarin.forms
- 19. Jak mogę zadzwonić EditorFor ze sterownika
- 20. Jak otworzyć programowo programowo
- 21. Jak ustawić programowo programowo?
- 22. Jak programowo wykonać połączenie telefoniczne?
- 23. Powinienem zadzwonić do SqlDataReader.HasRows, jeśli zadzwonię do SqlReader.Read
- 24. Wtryskarka konstruktora - gdzie chcesz zadzwonić?
- 25. Programowo programowo zapisuj tekst do pliku audio.
- 26. Java przeciążenia: referencyjny zadzwonić niejednoznaczne
- 27. Jak dodawać ograniczenia programowo do programowo utworzonego UIView?
- 28. Dropwizard: Jak zatrzymać programowo programowo
- 29. Programowo programowo resetuje iPhone'a do ustawień fabrycznych.
- 30. Jak wywoływać drawRect programowo w celu c
to po prostu zastępuje potrzebę na wykonanie Maven Plugin z koniecznością wykonania kolejnego Maven Plugin. –
@JensSchauder: Nie, nie ma. Mojo-Executor zapewnia prosty interfejs API języka Java, który wywołuje wtyczki Maven w twoim imieniu. Wywoływanie pluginów Maven bezpośrednio wymaga dużego podnoszenia ciężarów! – Gili
OK, nie było to jasne ze strony projektu dla mnie. –