[英]Maven - Is `maven-archetype-simple` a valid archetype?
通常,我使用原型maven-archetype-quickstart
创建一个maven jar项目,它可以很好地工作。
但是我想创建没有示例App.java
类的Maven项目,因此我尝试了maven-archetype-simple
原型,并得到了错误。
Maven命令:
mvn archetype:generate -DgroupId=eric -DartifactId=hello -Dversion=0.1 -DarchetypeArtifactId=maven-archetype-simple -DinteractiveMode=false -X -DarchetypeCatalog=local
错误提示:
[错误]无法在独立项目上执行目标org.apache.maven.plugins:maven-archetype-plugin:2.4:generate(default-cli):定义的工件不是原型-> [Help 1] org。 apache.maven.lifecycle.LifecycleExecutionException:无法在目标Standalone-Pom上执行目标org.apache.maven.plugins:maven-archetype-plugin:2.4:generate(default-cli):定义的工件不是org的原型。 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)位于org.apache.maven.lifecycle.internal处的apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)。在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)的MojoExecutor.execute(MojoExecutor.java:145)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java: 80)在org.org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)。 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)的apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java: 193)在org.apache.maven.cli.MavenCli.doMain上的org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)在org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)在org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)在org.apache.maven.cli.MavenCli.main(MavenCli.java:199)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :62),位于org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(位于java.lang.reflect.Method.invoke(Method.java:497)处的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处。于org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)的org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)的Launcher.java:289) rg.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)原因:org.apache.maven.plugin.MojoFailureException:定义的工件不是org.apache.maven.archetype.mojos的原型。 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)处的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:205) )... 20更多原因:org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure:定义的工件不是org.apache.maven.archetype.ui.generation.DefaultArchetypeGenerationConfigurator.configureArchetype(DefaultArchetypeGenerationConfigurator.java:150的原型),网址为org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:189)...更多22 [ERROR] [ERROR] [ERROR]有关错误和可能的解决方案的更多信息,请阅读以下内容 文章:[错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
问题是:
maven-archetype-simple
是有效的原型吗? maven-archetype-simple
是原型,请参阅: https : //maven.apache.org/guides/introduction/introduction-to-archetypes.html ,但是在我的系统中不起作用测试,所以感到困惑。 App.java
情况下创建Maven项目? maven-archetype-simple
工件确实存在于Maven Central上 ,但它不是有效的原型,因为它不包含正确的元数据文件。 有效的原型必须在其JAR文件中 :
META-INF/maven/archetype-metadata.xml
(这是新格式); META-INF/maven/archetype.xml
甚至是META-INF/archetype.xml
(这是旧格式)。 而且,特定的工件(如Central上一样)没有这些文件。 因此,它不被视为插件的有效原型。 这些文件存储原型所需的参数,其可能的默认值,应使用的文件等,因此确实需要它们。
我不确定是否存在可以使用给定的Maven坐标仅生成一个单独的pom.xml
的原型。 实际上,这是使用maven-archetype-quickstart
,而不会生成App.java
和AppTest.java
。 请记住,原型实际上是旨在从预定义的模板(例如示例Java EE应用程序或示例Maven项目)创建项目。 所有这些都将需要更多的设置,而不仅仅是编写POM文件。
如果你真的, 真的 ,不希望这些文件,您可以
使用以下目录结构创建一个新的Maven项目,例如my-simple-archetype
:
pom.xml
src
\---main
\---resources
+---archetype-resources
| pom.xml
|
\---META-INF
\---maven
archetype-metadata.xml
根目录下pom.xml
内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>eric</groupId>
<artifactId>my-simple-archetype</artifactId>
<version>0.1</version>
<packaging>maven-archetype</packaging>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>2.4</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
src/main/resources/archetype-resources/pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
</project>
最后, src/main/resources/META-INF/maven/archetype-metadata.xml
:
<archetype>
<id>my-simple-archetype</id>
</archetype>
现在您可以构建此项目并安装它:
cd my-simple-archetype
mvn clean install
这将更新您的本地目录,以便此新原型可用。 您终于可以使用它了! 在新目录中,执行
mvn archetype:generate -DgroupId=eric -DartifactId=hello -Dversion=0.1 -DarchetypeArtifactId=my-simple-archetype -DarchetypeGroupId=eric -DinteractiveMode=false
结果,您将获得所需的项目...,该项目由单独的pom.xml
。 因此,当然,您现在可以自定义您的原型 。
或者,您认为这样做不值得,并且在创建文件后删除文件要简单得多:
mvn archetype:generate -DgroupId=eric -DartifactId=hello -Dversion=0.1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
rmdir /S /Q hello\src
或rm -rf hello/src
如果您使用的是Linux计算机)。
关于maven-archetype-simple
,即使它是有效的(不是这种情况),也有些过时(2006年)。 我建议您使用更多最新的东西,以使插件和Java版本不会太旧。
java8-quickstart-archetype
要求:
mvn archetype:generate -DgroupId=eric -DartifactId=hello \
-Dversion=0.1 -DarchetypeArtifactId=java8-quickstart-archetype \
-DarchetypeGroupId=pl.org.miki -DinteractiveMode=false
可以在以下位置找到该原型源: github.com/mikolak-net/java8-quickstart-archetype 。
这是有效的Maven原型,请参阅https://maven-repository.com/search?q=maven-archetype-simple
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.