【问题标题】:Maven ear project with ejb module. error generating application.xml带有 ejb 模块的 Maven ear 项目。生成 application.xml 时出错
【发布时间】:2013-11-22 00:22:14
【问题描述】:

在编译以下 pom 时,我收到一个异常,指出项目中缺少 core 依赖项:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-ear-plugin:2.8:generate-application-xml (default-generate-application-xml) on project theear: Artifact[ejb:com.myapp:core] is not a dependency of the project. -> [Help 1]

耳朵是这样设置的:

<project ...>
    ...

    <artifactId>theear</artifactId>
    <packaging>ear</packaging>

    <dependencies>
        <dependency>
            <groupId>com.myapp</groupId>
            <artifactId>web</artifactId>
            <version>${application.web.version}</version>
            <type>war</type>
            <scope>runtime</scope>
        </dependency>

        <!-- myapp projects -->
        <dependency>
            <groupId>com.myapp</groupId>
            <artifactId>core</artifactId>
        </dependency>

        ...
    </dependencies>

    <build>
        <finalName>theear</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.8</version>
                <configuration>
                    <modules>
                        <webModule>
                            <groupId>com.myapp</groupId>
                            <artifactId>web</artifactId>
                            <contextRoot>/web</contextRoot>
                            <bundleFileName>web.war</bundleFileName>
                        </webModule>
                        <ejbModule>
                            <groupId>com.myapp</groupId>
                            <artifactId>core</artifactId>
                            <bundleFileName>core.jar</bundleFileName>
                        </ejbModule>
                    </modules>
                    <defaultLibBundleDir>lib/</defaultLibBundleDir>
                    <skinnyWars>true</skinnyWars>
                </configuration>
            </plugin>
            ...
        </plugins>
    </build>
</project>

核心项目是这样的:

<project ...>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>core</artifactId>
    <version>1.0.0.Pre-Alpha</version>
    <packaging>ejb</packaging>

    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <ejbVersion>3.1</ejbVersion>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

如你所见,ear 清楚地将核心模块列为依赖项

注意:版本缺失,因为这个 pom 声明了一个聚合 pom,因为它是具有相应 dependencyManagement 标签的父级。

您知道这可能是什么原因吗?

【问题讨论】:

    标签: java maven configuration


    【解决方案1】:

    我遇到了this 网站,问题是我在列出核心依赖项时没有包含&lt;type&gt;ejb&lt;/type&gt; 元素。

    完整的依赖应该是这样的:

        <dependency>
            <groupId>com.myapp</groupId>
            <artifactId>core</artifactId>
            <version>1.0.0.Pre-Alpha</version>
            <type>ejb</type>
        </dependency>
    

    我不知道为什么,但是当您将类型指定为 ejb 时,maven 抱怨没有版本。

    【讨论】:

    • 你之前没有添加&lt;version&gt;。注意:必须始终在依赖项中提供至少 3 个参数:groupIdartifactIdversion
    • 除非当前 pom 从父 pom 继承版本。
    • 谢谢!这让我发疯了。
    【解决方案2】:

    将 EJB 模块作为依赖项添加到 EAR 应用程序时,Maven 无法构建 Application.xml。原因是依赖项必须是 ejb 类型。当手动将 EJB 模块添加到 EAR 应用程序依赖项时会发生这种情况。如果手动将 WAR 模块添加到 EAR,也会发生这种情况。应该在 POM 中为每个依赖项指定 war。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2012-08-19
      • 2017-05-09
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多