Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有ejb模块的Maven ear项目。生成application.xml时出错_Java_Maven_Configuration - Fatal编程技术网

Java 带有ejb模块的Maven ear项目。生成application.xml时出错

Java 带有ejb模块的Maven ear项目。生成application.xml时出错,java,maven,configuration,Java,Maven,Configuration,在编译以下pom时,我得到一个异常,指出项目中缺少核心依赖项: [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 projec

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

[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]
EAR的设置如下所示:

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

...
西厄
耳朵
com.myapp
网状物
${application.web.version}
战争
运行时
com.myapp
核心
...
西厄
org.apache.maven.plugins
maven耳朵插件
2.8
com.myapp
网状物
/网
网络战争
com.myapp
核心
core.jar
解放党/
真的
...
核心项目如下:

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

4.0.0
核心
1.0.0.Pre-Alpha
ejb
...
org.apache.maven.plugins
maven ejb插件
2.3
3.1
正如您所见,ear清楚地将核心模块列为依赖项

注意:缺少该版本,因为此pom使用相应的DependencyManager标记将聚合pom声明为其父级

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

我看到了这个网站,问题是我在列出核心依赖项时没有包含
ejb
元素

完全依赖项应如下所示:

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

com.myapp
核心
1.0.0.Pre-Alpha
ejb

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

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

而且您之前没有添加
。注意:依赖项中必须始终至少提供3个参数:
groupId
artifactId
version
,除非当前pom从父pom继承了版本。谢谢!这让我快发疯了。