【问题标题】:error during build EAR file in Maven在 Maven 中构建 EAR 文件期间出错
【发布时间】:2012-10-11 10:04:18
【问题描述】:

我面临以下问题:

未能执行目标 org.apache.maven.plugins:maven-ear-plugin:2.7:generate-application-xml 项目 UserAdminEAR 上的 (default-generate-application-xml): Artifact[war:com.syril.administration:UserAdmin] 不是依赖项 的项目。 -> [帮助 1]

这种错误有什么解决办法?

我的 pom.xml 是

<modelVersion>4.0.0</modelVersion>
<groupId>UserAdminEAR</groupId>
<artifactId>UserAdminEAR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>UserAdmin</name>
<packaging>ear</packaging>
<dependencies>
    <dependency>
        <groupId>com.syril.dao</groupId>
        <artifactId>dataAccess</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.syril.service</groupId>
        <artifactId>UserAdminService</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <jarModule></jarModule>
                    <javaModule>
                        <groupId>com.syril.dao</groupId>
                        <artifactId>dataAccess</artifactId>
                        <includeInApplicationXml>true</includeInApplicationXml>
                    </javaModule>
                    <webModule>
                        <groupId>com.syril.service</groupId>
                        <artifactId>UserAdminSL</artifactId>
                        <contextRoot>/UserAdminSL</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>

【问题讨论】:

    标签: maven maven-ear-plugin


    【解决方案1】:

    您还必须将战争作为依赖项添加到项目中,而不仅仅是在插件配置中。

    <project ...>
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.syril.administration</groupId>
        <artifactId>UserAdminEAR</artifactId> 
        <version>YOUR_VERSION_HERE</version>
        <packaging>ear</packaging>
    
        <dependencies>
            <!-- some other dependencies here -->
            ...
            <!-- Here is the dependency to the war that is referenced in the ear plugin -->
            <dependency> 
                <groupId>com.syril.administration</groupId> 
                <artifactId>UserAdmin</artifactId> 
                <version>YOUR_VERSION_HERE</version> 
                <type>war</type> 
            </dependency>
        </dependencies>
        ...
    </project>
    

    编辑

    &lt;webModule/&gt; 工件不在您的 &lt;dependencies/&gt; 列表中。这就是我的建议。

    添加以下内容:

    <dependency>
        <groupId>com.syril.service</groupId>
        <artifactId>UserAdminSL</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    

    更改&lt;webModule/&gt;

    <webModule>
        <groupId>com.syril.service</groupId>
        <artifactId>UserAdminService</artifactId>
        <contextRoot>/UserAdminSL</contextRoot>
    </webModule>
    

    如果UserAdminService 与我认为的UserAdminSL 相同,那当然是这样。

    【讨论】:

    • 其实 jar 和 war 应该在我的 EAR 文件中。但它不存在
    • 运行mvn clean package 看看你是否还有这个问题。他们应该在那里。您也不必声明 &lt;jarModule/&gt;&lt;javaModule/&gt; 标记。完全删除它们。
    • @maba 为什么必须首先将工件描述为依赖项,然后我们又需要&lt;webModule&gt; sn-p 进行打包?为什么要两次声明相同的信息?你能解释一下吗?
    猜你喜欢
    • 2017-05-09
    • 2019-06-04
    • 1970-01-01
    • 2011-02-08
    • 2013-07-07
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多