2

既存のマルチモジュールMavenプロジェクトからアーキタイプを作成しようとしています。このために、ディレクトリをルートディレクトリ(ルートpom.xmlが含まれている場所)に変更し、「mvnarchetype: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ボックスでmaven3.0.4とjava1.6.0_25を使用しています。何かアドバイス?

ここで何がうまくいかないかについて何か考えはありますか?

4

2 に答える 2

4

少し前にこの質問を投稿しましたが、この回答は他の人に役立つかもしれません。

私はプロジェクトで同じ問題を抱えていました。このエラーは、プロジェクト内に異なるエンコードの文字を含むファイルがある場合に発生します。この問題の解決策は、この文字を置き換えることです。数が少ない場合は、原型を生成し、文字を元に戻し、最後に、原型メタデータ ファイルで正しいエンコーディングに変更します。

別のオプションは、次のように、アーキタイプ生成でデフォルトのエンコンディング UTF-8 を変更することです。

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

詳細については、次のガイドに従ってください。

于 2012-08-23T13:01:03.983 に答える
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 のビルド セクションに、以下のすべての構成で 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>

そうすることで、プロパティ ファイル (archetype.properties) を記述してこの構成を宣言するのではなく、すべてのアーキタイプ生成構成を独自の pom.xml で提供する必要があります。

そして最後に、私はmvn clean installそれでmavenを走らせましたmvn archetype:create-from-project -e -X

それでも、上記のように pom.xml を更新したとしても、この投稿で報告されているようなエンコーディング エラーに気付く場合があります... プロジェクトに正しいエンコーディングを設定した後も同じエラーが発生する場合、まだ無効な文字が含まれているプロジェクト ファイルを特定してください。トラブルメーカー ファイルを見つけるには、次のように Maven がコンソールに表示するデバッグ行を観察"[DEBUG] InputFileName:src\main\resources\META-INF\persistence.xml"し、フォルダーに書き込まれたプロジェクト ファイルを確認する必要があります${basedir}\target\generated-sources\archetype\src\main\resources\archetype-resources。アーキタイプの作成中にエンコード エラーが発生した場合、前述のフォルダーが元のプロジェクトのコンテンツと一致しません。これは、プロパティで指定された文字セットに含まれていない無効な文字または互換性のない文字が原因で、Maven が一部のリソースをコピーできなかったために発生します。

于 2014-04-10T17:12:48.917 に答える