1

ショートバージョン

maven-glassfish-plugin階層型(継承ベース)のMavenマルチプロジェクトセットアップのルートプロジェクトでのみ実行されるようにしたいと思います。

ロングバージョン

次の設定:

project-root
|
+-pom.xml
|
+ ear-module
|  |
|  +-pom.xml
|
+ jar-module
   |
   +-pom.xml

すべてのサブモジュールは経由<modules>...</modules>でルートプロジェクトに含まれ、すべてのサブモジュールはルートプロジェクトpom.xmlを継承します。私のルートプロジェクトのpomには、次のものが含まれていmaven-glassfish-pluginます。

...
<plugin>
    <groupId>org.glassfish.maven.plugin</groupId>
    <artifactId>maven-glassfish-plugin</artifactId>
    <version>2.1</version>
    <inherited>false</inherited>
    <configuration>
            <glassfishDirectory>${glassfish.home}</glassfishDirectory>
            <passwordFile>${glassfish.home}/masterpassword.txt</passwordFile>
            <domain>
                    <name>${project.name}</name>
                    <adminPort>4848</adminPort>
                    <httpPort>8080</httpPort>
                    <httpsPort>8443</httpsPort>
                    <iiopPort>3700</iiopPort>
                    <jmsPort>7676</jmsPort>
            </domain>
            <components>
                    <component>
                    <name>poc.vermittler</name>
                    <artifact>${project.basedir}/ear-module/target/ear-project-1.0-SNAPSHOT.ear</artifact>
                    </component>
    </configuration>
</plugin>
...

:これは私のpomの単純化されたバージョンです。実行されない場合があります:)

ear-moduleモジュールをGlassfish にのみデプロイしたいので、<inherited>false</inherited>セクションを追加<components>...</components>し、ルートpomのようにデプロイするモジュールを示します。

今コマンド:

mvn glassfish:deploy

耳をGlassfishにデプロイしますが、これまでのところすべてうまくいきます...しかし、Mavenはすべてのサブモジュールに再帰的に適切になり、すべて失敗します。

No plugin found for prefix 'glassfish' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories

オプションを指定してルートプロジェクトのみを実行するようにMavenに指示することはでき-plますが、私の目的では、デプロイはそのような追加情報に依存するべきではありません。

あなたの助けをどうもありがとう!

4

1 に答える 1

1

この問題に対する良い解決策はないようです。

  • プラグインは「NOP」/サイレント破棄機能をサポートしています
  • または、すべてのサブプロジェクトで失敗します

別の方法は、新しいサブプロジェクト(ルートプロジェクトには含まれていませんが、ルートプロジェクト<modules>...</modules>から継承します)を作成し、デプロイメントアーティファクトを持つプロジェクトのみに依存関係を追加することです。

これで、サブプロジェクトを実行しなくても、プラグインをこのサブプロジェクトに含めることができます。

または、怠惰な人のために:mvn clean package glassfish:redeploy -pl .子プロジェクトに降りることなく、ルートプロジェクトのみを選択的に実行します。

于 2012-06-21T15:22:43.437 に答える