我正在尝试从现有的多模块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。有什么建议吗?
知道这里出了什么问题吗?
答案 0 :(得分:4)
你刚才发布了这个问题,不过这个答案可能对其他人有所帮助。
我在项目中遇到了同样的问题。如果项目中的文件包含不同encondig中的字符,则会发生此错误。此问题的解决方案是替换此字符 - 如果不是很多,则生成原型,将字符还原为原始字符,最后更改为原型元数据文件中的右侧对话。
另一种选择是更改原型生成中的默认enconding UTF-8,如下所示:
mvn archetype:create-from-project -Darchetype.properties=../archetype.properties
有关详细信息,请参阅以下指南:
答案 1 :(得分: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部分插入了以下所有配置的archetype-plugin:
<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
即便如此,你仍然可能会注意到一些编码错误,就像本文中报道的一样,即使你已经更新了你的pom.xml,如上所示......如果你在设置正确的编码后仍然有同样的错误对于您的项目,尝试找出哪个项目文件仍包含无效字符。
要查找troublemaker文件,您应该观察Maven在控制台上显示的调试行,如下所示:"[DEBUG] InputFileName:src\main\resources\META-INF\persistence.xml"
并检查哪些项目文件已写入文件夹${basedir}\target\generated-sources\archetype\src\main\resources\archetype-resources
。
在原型创建过程中发生编码错误时,上述文件夹与原始项目内容不匹配,因为Maven无法复制某些资源,因为无效或不兼容的字符未包含在属性指定的字符集中。