首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java代码生成Maven原型

从Java代码生成Maven原型
EN

Stack Overflow用户
提问于 2013-05-14 18:44:20
回答 2查看 1.7K关注 0票数 3

我想知道是否可以在Java代码中运行maven命令: archetype:generate。我已经用maven嵌入器尝试过了,但是这个库已经被弃用了。

我想做一个原型:从远程目录生成,并捕获原型所需的属性。

例如,我想运行的maven命令是:

代码语言:javascript
复制
mvn archetype:generate \
    -DgroupId=com.maven \
    -DartifactId=test \
    -DarchetypeVersion=1.0-alpha-4 \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DinteractiveMode=false \
    -DarchetypeCatalog=http://repo1.maven.org/maven2/archetype-catalog.xml

对于某些原型,在执行此请求后,会有必需的属性。我希望在图形用户界面屏幕上显示这些属性,就像m2eclipse插件一样,这样用户就可以填写这些属性。

有没有人有建议?

EN

回答 2

Stack Overflow用户

发布于 2013-05-14 20:19:04

您可以尝试使用Maven Invoker

将此依赖项添加到pom.xml

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.maven.shared</groupId>
    <artifactId>maven-invoker</artifactId>
    <version>2.1.1</version>
</dependency>

下面是代码可能的样子:

代码语言:javascript
复制
import org.apache.maven.shared.invoker.*;

import java.util.Collections;
import java.util.Properties;

public class MavenInvoker {

    public static void main(String[] args) throws MavenInvocationException {
        InvocationRequest request = new DefaultInvocationRequest();
        request.setGoals( Collections.singletonList("archetype:generate") );
        request.setInteractive(false);
        Properties properties = new Properties();
        properties.setProperty("groupId", "com.maven");
        properties.setProperty("artifactId", "test");
        properties.setProperty("archetypeVersion", "1.0-alpha-4");
        properties.setProperty("archetypeGroupId", "org.apache.maven.archetypes");
        properties.setProperty("archetypeArtifactId", "maven-archetype-j2ee-simple");
        properties.setProperty("archetypeCatalog", "http://repo1.maven.org/maven2/archetype-catalog.xml");
        request.setProperties(properties);
        Invoker invoker = new DefaultInvoker();
        InvocationResult result = invoker.execute( request );
    }
}
票数 4
EN

Stack Overflow用户

发布于 2013-05-14 18:54:05

如果所有其他方法都失败了,您可以使用Runtime.exec()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16541124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档