【问题标题】:Cannot create archetype from existing maven project无法从现有的 Maven 项目创建原型
【发布时间】:2012-05-17 13:30:34
【问题描述】:

我正在尝试从现有的多模块 maven 项目创建原型。为此,我将目录更改为根目录(根 pom.xml 所在的位置)并发出“mvn archetype:create-from-project”。构建未完成,我收到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:create-from-project (default-cli) on project siaci-d: charsetName -> [Help 1]

使用 -e 和 -X 标志再次运行,我可以看到以下堆栈跟踪:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:create-from-project (default-cli) on project siaci-d: charsetName
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoFailureException: charsetName
at org.apache.maven.archetype.mojos.CreateArchetypeFromProjectMojo.execute(CreateArchetypeFromProjectMojo.java:285)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more

我检查了 maven-archetype-plugin 文档,没有找到对 charsetName 属性的任何引用。所以,我对如何解决这个问题有点迷茫。我在 Ubuntu 机器上使用 maven 3.0.4 和 java 1.6.0_25。有什么建议吗?

知道这里出了什么问题吗?

【问题讨论】:

  • 您的项目中是否设置了源代码等的编码?
  • 是的。我已将编码设置为 ISO-8859-1。我尝试了两种方法:maven 编译器插件配置中的 标记和 属性。他们都没有为我工作......

标签: maven maven-3 maven-archetype


【解决方案1】:

您前段时间发布了此问题,但此答案可能对其他人有所帮助。

我在一个项目中遇到了同样的问题。当您的项目中有一个文件包含不同编码中的字符时,会发生此错误。解决这个问题的方法是替换这些字符——如果不是很多,则生成原型,将字符恢复为原始字符,最后在原型元数据文件处更改为右编码。

另一个选项是在原型生成中更改默认编码 UTF-8,如下所示:

mvn archetype:create-from-project -Darchetype.properties=../archetype.properties 

有关更多信息,请遵循以下指南:

【讨论】:

    【解决方案2】:

    我正在处理同样的错误,然后我发现是什么弄乱了原型创建...... 首先,我通过在 pom.xml 中插入以下属性来选择编码 ISO-8859-1:

    <properties>
        <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
        <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>
        <project.resources.sourceEncoding>${project.build.sourceEncoding}</project.resources.sourceEncoding>
    </properties>
    

    之后,我在 pom.xml 的 build 部分插入了带有以下所有配置的原型插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-archetype-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <defaultEncoding>${project.build.sourceEncoding}</defaultEncoding>
            <encoding>${project.build.sourceEncoding}</encoding>
            <archetypeArtifactId>archetype-wsjpa</archetypeArtifactId>
            <archetypeGroupId>br.com.example</archetypeGroupId>
            <archetypeVersion>1.0</archetypeVersion>
            <archetypeFilteredExtentions>java,xml</archetypeFilteredExtentions>
        </configuration>
    </plugin>
    

    这样做,您应该在自己的 pom.xml 中提供所有原型生成配置,而不是编写属性文件 (archetype.properties) 来声明此配置。

    最后,我用mvn clean install 然后mvn archetype:create-from-project -e -X 运行了maven

    即使如此,您仍然可能会注意到一些编码错误,如本文中报告的错误,即使您已更新 pom.xml,如上所示...如果您在设置正确的编码后仍然遇到相同的错误对于您的项目,请尝试找出哪个项目文件仍包含无效字符。 要找到麻烦制造者文件,您应该观察 Maven 在控制台上显示的调试行,如下所示:"[DEBUG] InputFileName:src\main\resources\META-INF\persistence.xml" 并检查哪些项目文件已写入文件夹 ${basedir}\target\generated-sources\archetype\src\main\resources\archetype-resources。 在原型创建过程中发生编码错误时,上述文件夹与原始项目内容不匹配,这是因为由于指定的属性字符集中不包含无效或不兼容的字符,Maven无法复制某些资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2011-06-28
      • 2012-07-02
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 2022-10-16
      相关资源
      最近更新 更多