Maven - Является ли `maven-archetype-simple` действительным архетипом?

Обычно я создаю проект maven jar с архетипом App.java, он работает хорошо.

Но я хочу создать проект Maven без образца maven-archetype-simpleкласса, поэтому я попробовал maven-archetype-simpleархетип и получил ошибку.

Команда Maven:

maven-archetype-simple

Совет подсказок:

[ERROR] Не удалось выполнить цель org.apache.maven.plugins: maven-archetype-plugin: 2.4: сгенерировать (default-cli) в проекте standalone-pom: Определенный артефакт не является архетипом -> [Помощь 1] org. apache.maven.lifecycle.LifecycleExecutionException: Не удалось выполнить цель org.apache.maven.plugins: maven-archetype-plugin: 2.4: сгенерировать (default-cli) в проекте standalone-pom: Определенный артефакт не является архетипом в org. apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) в org.apache.maven.lifecycle.internal. MojoExecutor.execute (MojoExecutor.java:145) в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:116) в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java: 80) в org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51) в org. apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:307) в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java: 193) в 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) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:497) в org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced ( Launcher.java:289) на org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) на org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) на o rg.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) Вызвано: org.apache.maven.plugin.MojoFailureException: Определенный артефакт не является архетипом в org.apache.maven.archetype.mojos .CreateProjectFromArchetypeMojo.execute (CreateProjectFromArchetypeMojo.java:205) в org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134) в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:207 ) ... 20 more Причиненный: 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 еще [ОШИБКА] [ОШИБКА] [ОШИБКА] Для получения дополнительной информации об ошибках и возможных решениях, пожалуйста, прочтите следующее статьи: [ОШИБКА] [Помощь 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Вопросы:

  • Является App.javaли действительным архетипом?
    В официальном документе maven говорится, maven-archetype-simpleчто это архетип, см. Https://maven.apache.org/guides/introduction/introduction-to-archetypes.html , но он не будет работать в моем тесте, поэтому запутайтесь ,
  • Как создать проект Maven без сгенерированного кода META-INF/maven/archetype-metadata.xml?

java,maven,maven-archetype,

2

Ответов: 3


5 принят

Артефакт META-INF/maven/archetype.xml существует на Maven Central , но он не является допустимым архетипом, поскольку он не содержит правильных файлов метаданных. Действительный архетип должен иметь в своем файле JAR :

  • либо META-INF/archetype.xml(это новый формат);
  • или a pom.xmlили даже maven-archetype-quickstart(это старый формат).

И этот конкретный артефакт, как он есть на Центральной, не имеет этих файлов. Таким образом, он не считается действительным архетипом для плагина. Эти файлы сохраняют необходимые параметры для архетипа, их возможные значения по умолчанию, файлы, которые он должен использовать, и т. Д., Чтобы они действительно требовались.

Я не уверен, что существует архетип, который будет генерировать только одиночный App.javaс заданными координатами Maven. Это эффективно то, что с помощью maven-archetype-quickstart, без генерации AppTest.javaи my-simple-archetypeбудет делать. Имейте в виду, что архетип действительно предназначен для создания проекта из заранее определенного шаблона, такого как пример приложения Java EE, или образец проекта Maven; все из них потребуют большей настройки, чем просто запись POM-файла.

Если вы действительно, действительно , не хотите эти файлы, вы можете либо

Создайте свой собственный архетип

Создайте новый проект Maven, например , со следующей структурой каталогов: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 hellosrc. Итак, конечно, теперь вы можете настроить этот архетип .

Удалить файлы

Или вы решаете, что это не стоит усилий, и гораздо проще удалить файлы после их создания:

rm -rf hello/src

Или maven-archetype-simpleесли вы на машине Linux.


1

О 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

Java, Maven, Maven-архетип,
Похожие вопросы