原型:为maven-archetype-quickstart生成行为

时间:2014-03-31 18:00:00

标签: maven maven-archetype

我试图理解为什么archetype:generate的某些参数组合可以像其他人一样工作。我正在为maven-archetype-quickstart尝试此操作。

当我既未指定archetypeVersion也未指定interactiveMode=false时,项目创建仍然有效。

mvn archetype:generate -DarchetypeGroupId="apache.maven.archetypes" -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT

当然,它以交互模式运行。它向我展示了几个版本,最新版本为1.1。这也是从maven central确认的。然后我尝试让项目创建在非交互模式下工作。但是,我发现如果我指定interactiveMode=falsearchetypeVersion=1.1或两者,则项目创建失败;即以下两种情况都不起作用:

mvn archetype:generate -DarchetypeGroupId="apache.maven.archetypes" -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT -DarchetypeVersion=1.1

mvn archetype:generate -DarchetypeGroupId="apache.maven.archetypes" -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

mvn archetype:generate -DarchetypeGroupId="apache.maven.archetypes" -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT -DarchetypeVersion=1.1 -DinteractiveMode=false

最后我看到this post并注意到没有指定archetypeGroupID并决定尝试它并且它有效,即以下工作在非交互模式下:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

我很困惑为什么会这样。我很感激能帮助我更好地理解这种行为。

在每个问题情况下,错误(或多或少)如下:

$ mvn archetype:generate -DarchetypeGroupId="apache.maven.archetypes" -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId="com.mycompany.mygroup" -DartifactId=artifact1  -Dversion=1.0-SNAPSHOT -DarchetypeVersion=1.1 -DinteractiveMode=false
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[WARNING] Archetype not found in any catalog. Falling back to central repository (http://repo1.maven.org/maven2).
[WARNING] Use -DarchetypeRepository=<your repository> if archetype's repository is elsewhere.
Downloading: http://repo1.maven.org/maven2/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.633s
[INFO] Finished at: Sat Mar 29 22:01:24 PDT 2014
[INFO] Final Memory: 13M/310M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: The desired archetype does not exist (apache.maven.archetypes:maven-archetype-quickstart:1.1) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

1 个答案:

答案 0 :(得分:0)

取决于您使用的版本-Darchetype不再使用。 要使用 maven-archetype-quickstart 创建一个简单的Maven项目,请按照以下步骤操作:

使用命令行类型:

mvn archetype:generate -DgroupId=mygroupId -DartifactId=myartifactId
-Dpackage=mypackage -Dversion=1.0-SNAPSHOT

当然要替换你的价值观。然后当您输入时,将显示原型列表,然后您需要键入所需原型的数量。对于 maven-archetype-quickstart 一个(它是默认的一个),你只需输入一个没有数字的输入,因为maven会认为你想要默认值。之后,只需确认数据输入,然后您就会看到一个BUILD SUCCESS。

相关问题