2011-12-22 15 views
4

は、私は次のような構造を持つプロジェクトを持っていますポンポンインサイド(モジュール、jarファイル)
プロジェクト・ウェブ(モジュール、戦争)
プロジェクト耳(モジュール、耳)
エラー:</p> <p>プロジェクト(POM)<br> プロジェクトクライアント(モジュール、jarファイル)<br> プロジェクトのejb:作成-からプロジェクト

モジュールが使用して親を参照:

<relativePath>../project</relativePath> 

そして、ルートpomは(../を使用して)同じ方法でモジュールを参照します。

archetype:create-from-projectを使用してアーキタイプを作成することができ、すべてが円滑に実行されます。

しかし、私は原型をインストールしよう(MVNターゲット内部でインストール/生成-ソース/原型DIR)、私はエラーを取得:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:integration-test (default-integration-test) on project seguranca-archetype: 
    [ERROR] Archetype IT 'basic' failed: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/../__rootArtifactId__-client/pom.xml' 
    [ERROR] -> [Help 1] 
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:integration-test (default-integration-test) on project seguranca-archetype: 
    Archetype IT 'basic' failed: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/../__rootArtifactId__-client/pom.xml' 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
     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:319) 
     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:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:616) 
     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.MojoExecutionException: 
    Archetype IT 'basic' failed: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/../__rootArtifactId__-client/pom.xml' 
     at org.apache.maven.archetype.mojos.IntegrationTestMojo.execute(IntegrationTestMojo.java:268) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 

問題は、ファイルが存在することである(それは、ターゲット上にあります/ generated-sources/archetype/src/main/resources/_ rootArtifactId _ _ client/pom.xml)、私はarchetype-metadata.xmlをうまく使いこなそうとしました。すべての手がかりは?事前

+0

私には同じ問題があります。すべての手がかりは? – jmcollin92

答えて

1

原型プラグインはマルチモジュールプロジェクトのためのフラットなレイアウトをサポートしていないように見えます。その場合、回避策はネストされたレイアウトに変更することです。私はarchetype-resourcesディレクトリ外のモジュールをそのモジュールに移動することでそれを行いました。後

pom.xml 
src 
├── main 
│   └── resources 
│    ├── archetype-resources 
│    │   └── pom.xml 
│    ├── META-INF 
│    │   └── maven 
│    │    └── archetype-metadata.xml 
│    ├── __rootArtifactId__.module1 
│    │   ├── pom.xml 
│    │   └── ... 
│    ├── __rootArtifactId__.module2 
│    │   ├── pom.xml 
│    │   └── ... 
│    ├── __rootArtifactId__.module3 
│       ├── pom.xml 
│       └── ... 
│ 
└── test 
    └── resources 
     └── projects... 

::前

:このような

pom.xml 
src 
├── main 
│   └── resources 
│    ├── archetype-resources 
│    │   ├── pom.xml 
│    │   ├── __rootArtifactId__.module1 
│    │   │   ├── pom.xml 
│    │   │   └── ... 
│    │   ├── __rootArtifactId__.module2 
│    │   │   ├── pom.xml 
│    │   │   └── ... 
│    │   └── __rootArtifactId__.module3 
│    │    ├── pom.xml 
│    │    └── ... 
│    └── META-INF 
│     └── maven 
│      └── archetype-metadata.xml 
└── test 
    └── resources 
     └── projects... 

そして、あなたは '..' 相対パスを削除し、原型-のmetadata.xmlのモジュールへの参照を編集します。

0

おかげでMavenの原型JIRAでこれに類似の問題があります。これを書いているようhttp://jira.codehaus.org/browse/ARCHETYPE-422

が、それは開いたまま。

私のプロジェクトのための実用的なアーキタイプを得るために、jboss-javaee6-webapp-ear-blank-archetype-7.1.3.CR1.jarを使ってプロジェクトを生成しました。その後、WebSphereを使用しているため、jboss固有の項目の多くを削除するようにプロジェクトを修正しました。

mvn clean archetype:create-from-project -Dinteractive=true 

私は原型がリポジトリと、その名前で終わるしたい場所を設定するarchetype.groupIdとarchetype.artifactIdを変更します。これらの変更の後、私はプロジェクトから作成を実行します。また、パッケージの値を変更しますが、他の項目のデフォルト値を受け入れます。

これはあなたが経験したように、これはうまく動作するようです。 \ target \ generated-sources \ archetypeにcdしてmvn installを実行すると、jarファイルが適切なパスと名前で作成されます。

私はEclipseを使ってプロジェクトを生成しますが、これもうまくいきます。大丈夫ですか?

私は環境に固有の小さな変更を加え、同じグループIDとアーティファクトIDを使用して上記の手順を実行します。私は、プロジェクトを生成するためにEclipseを使用し、それがエラーを与える:

org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/pom.xml' 

(私は一貫しMVN原型のためのコマンドラインで同じエラーを得ることはありません:。生成し、私はそれが起こる見てきました)

何らかの理由で、手順をもう一度実行して別のアーキタイプを入力してください。artifactIdは、プロジェクトから作成するときにこの問題を解決します。アーキタイプが更新されてm2eが好きではない場合、破損したり変更されたりするものがあるようです。

とにかく、これは試してみる価値があります。私は問題を絞り込むことができるかどうかを見ていきますが、今はそれぞれの更新に対してユニークなアーティファクトIDを使用します。

0

この問題は、Eclipse m2eプラグインを使用している場合にのみ発生するようです。 私は、次のコマンドラインを使用して問題を解決することができました:

mvn archetype:generate