{"id":20421,"date":"2023-08-13T15:00:56","date_gmt":"2023-08-13T13:00:56","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=20421"},"modified":"2023-08-13T14:46:36","modified_gmt":"2023-08-13T12:46:36","slug":"maven-embedder","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=20421","title":{"rendered":"Maven Embedder"},"content":{"rendered":"<p>Der &#8222;<a href=\"https:\/\/maven.apache.org\/ref\/3.6.2\/maven-embedder\/index.html\" rel=\"noopener\" target=\"_blank\">Maven Embedder<\/a>&#8220; ist eine M\u00f6glichkeit, Maven in Java-Anwendungen einzubetten und Maven-Funktionen programmatisch aufzurufen. Damit kannst du Maven in deinem Code verwenden, um Build- und Dependency-Management-Funktionen auszuf\u00fchren, ohne externe Prozesse aufrufen zu m\u00fcssen.<\/p>\n<div style=\"width: 525px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-20421-1\" width=\"525\" height=\"295\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/love-more.mp4?_=1\" \/><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/love-more.mp4\">http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/08\/love-more.mp4<\/a><\/video><\/div>\n<p>Man braucht nur eine Abh\u00e4ngigkeit:<\/p>\n<pre class=\"minimize:true lang:xhtml decode:true \" >&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.apache.maven&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;maven-embedder&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;4.0.0-alpha-7&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>Das Apache Maven Build-Tool ist ein weit verbreitetes Werkzeug in der Java-Entwicklungswelt, das die Automatisierung von Build-, Test- und Abh\u00e4ngigkeitsverwaltungsaufgaben erleichtert. Normalerweise wird Maven \u00fcber die Befehlszeile oder in Build-Skripten verwendet. In einigen Szenarien kann es jedoch erforderlich sein, Maven in Java-Anwendungen einzubetten, um Maven-Funktionen programmatisch aufzurufen. Das <a href=\"https:\/\/maven.apache.org\/ref\/3.6.2\/maven-embedder\/index.html\" rel=\"noopener\" target=\"_blank\">Maven Embedder<\/a> erm\u00f6glicht genau das. Was ist der Maven Embedder?<!--more--><\/p>\n<p>Der Maven Embedder ist eine Bibliothek und eine Sammlung von APIs, mit denen Entwickler Maven-Funktionen in ihre Java-Anwendungen einbetten k\u00f6nnen. Anstatt externe Maven-Prozesse auszuf\u00fchren, erm\u00f6glicht der Embedder die Interaktion mit Maven-Funktionen \u00fcber Java-Code. Dies ist besonders n\u00fctzlich, wenn du spezialisierte Build- oder Dependency-Management-Logik in deiner Anwendung ben\u00f6tigst. Hier ein Beispiel, welche eine Datei mit den Abh\u00e4ngigkeiten in eine Datei mit Hilfe des <strong>dependency:list<\/strong> Goals erzeugt. <\/p>\n<p>Das Plugin muss nat\u00fcrlich auch im Projekt sein:<\/p>\n<pre class=\"theme:dark-terminal minimize:true lang:xhtml decode:true \" >&lt;plugins&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-dependency-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;3.6.0&lt;\/version&gt;\r\n\t\t\t\t&lt;executions&gt;\r\n\t\t\t\t\t&lt;execution&gt;\r\n\t\t\t\t\t\t&lt;id&gt;analyze&lt;\/id&gt;\r\n\t\t\t\t\t\t&lt;goals&gt;\r\n\t\t\t\t\t\t\t&lt;goal&gt;analyze-only&lt;\/goal&gt;\r\n\t\t\t\t\t\t&lt;\/goals&gt;\r\n\t\t\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t\t\t&lt;failOnWarning&gt;false&lt;\/failOnWarning&gt;\r\n\t\t\t\t\t\t\t&lt;outputXML&gt;true&lt;\/outputXML&gt;\r\n\t\t\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t\t\t&lt;\/execution&gt;\r\n\t\t\t\t&lt;\/executions&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\r\n\t\t&lt;\/plugins&gt;<\/pre>\n<p>Hier die Beispiel-Methode:<\/p>\n<pre class=\"theme:dark-terminal lang:java decode:true \" >private int createDependencyFileList(String workingDirectory, String outputFileName) {\r\n\r\n\t\t\/\/ es muss evl. ein .mvn Verz. im Projekt vorhanden sein!\r\n\t\tString[] mavenArgs = new String[] { \"dependency:list\", \"-DexcludeTransitive=false\", \"-DoutputFile=\" + outputFileName };\r\n\r\n\t\tSystem.setProperty(MavenCli.MULTIMODULE_PROJECT_DIRECTORY, workingDirectory);\r\n\t\tMavenCli mavenCli = new MavenCli();\r\n\t\tint resultCode = mavenCli.doMain(mavenArgs, workingDirectory, System.out, System.err);\r\n\r\n\t\tif (resultCode == 0) {\r\n\t\t\tLOG.info(\"Maven command executed successfully. Result in File {}\", workingDirectory + outputFileName);\r\n\t\t} else {\r\n\t\t\tLOG.error(\"Maven command {} execution failed in Project {}\", mavenArgs[0], outputFileName);\r\n\t\t}\r\n\t\treturn resultCode;\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Der &#8222;Maven Embedder&#8220; ist eine M\u00f6glichkeit, Maven in Java-Anwendungen einzubetten und Maven-Funktionen programmatisch aufzurufen. Damit kannst du Maven in deinem Code verwenden, um Build- und Dependency-Management-Funktionen auszuf\u00fchren, ohne externe Prozesse aufrufen zu m\u00fcssen. Man braucht nur eine Abh\u00e4ngigkeit: &lt;dependency&gt; &lt;groupId&gt;org.apache.maven&lt;\/groupId&gt; &lt;artifactId&gt;maven-embedder&lt;\/artifactId&gt; &lt;version&gt;4.0.0-alpha-7&lt;\/version&gt; &lt;\/dependency&gt; Das Apache Maven Build-Tool ist ein weit verbreitetes Werkzeug in der Java-Entwicklungswelt, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=20421\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMaven Embedder\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,3897,79,7,3632],"tags":[5641,5642,2178,66,5640,2099],"class_list":["post-20421","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-java-programmierung","category-programmierung","category-tools","category-video","tag-aufrufen-von-mvn","tag-embedder","tag-java","tag-maven","tag-maven-embedder","tag-mvn"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20421"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/20421\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20421"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}