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.xml 中的模块。

现在命令:

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 回答