我正在使用Eclipse 3.7 Indigo和Maven M2E Plugin 1.0.100.
使用JBoss 7.x JavaEE 6 EAR原型,EAR的pom给了我这个错误:
插件执行未包括生命周期配置:org.apache.maven.plugins:行家入耳式插件:2.6:生成应用程序的XML(执行:默认生成的应用程序的XML,相:生成资源)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- Tell Maven we are using Java EE 6 -->
<version>6</version>
<!-- Use Java EE ear libraries as needed. Java EE ear libraries
are in easy way to package any libraries needed in the ear, and automatically
have any modules (EJB-JARs and WARs) use them -->
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules></modules>
</configuration>
<plugin>
Run Code Online (Sandbox Code Playgroud) 我刚刚从Ant切换到Maven,并试图找出建立基于EAR文件的企业项目的最佳实践?
假设我想创建一个非常标准的项目,其中包含EJB的jar文件,Web层的WAR文件和封装的EAR文件,以及相应的部署描述符.
我该怎么办呢?archetypeArtifactId=maven-archetype-webapp用war文件创建项目,并从那里扩展?什么是最好的项目结构(和POM文件示例)?你在哪里粘贴与ear文件相关的部署描述符等?
谢谢你的帮助.
我在maven有一个包含5个模块的项目.现在,当我进行"mvn clean install"时,它会生成一个包含两个罐子的耳朵,一个战争和一个来自其他模块的sar.
所有文件名都包含版本,例如projectx-ear-2.0.0.ear,projectx-client-2.0.0.jar等.
我需要重命名其中一个罐子和最后一个耳朵以省略文件名中的版本.它应该如下所示:
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
Run Code Online (Sandbox Code Playgroud)
现在我正在使用以下插件来构建:maven-compiler-plugin和maven-release-plugin
实现我期望的结果的最佳方法是什么?
(我最初在这里以非常详细的方式问过这个问题.我在这里摘录了它,因为maven-users邮件列表在这个问题上变得安静了.)(不仅仅是另一个新手问题)
我的参考资料是 http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management ; 如果这已经过时或错误,请在本次讨论中告诉我.
该文件中有一节以"第二个,非常重要......"开头.接下来,我将把该部分的项目A和B,并从他们身上摘录.
在该部分中,您将看到该项目A有一个<dependencyManagement>部分 - 除其他外 - 定义工件,c具有范围compile:
<!-- In A's pom.xml; condensed for brevity -->
<dependencyManagement>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<version>1.0</version>
<scope>compile</scope> <!-- look: compile scope -->
</dependency>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
然后你会看到一个pom.xmlfor项目B,(a)继承自项目A(因此继承其dependencyManagement部分)和(b)建立对工件的依赖c,而不必指定它version.您还会注意到,在神器的依赖c覆盖的范围c是runtime,不是compile:
<!-- In B's pom.xml, whose parent …Run Code Online (Sandbox Code Playgroud) 我正在使用maven-ear-plugin版本2.3.1 - 我知道有一个新版本可用:http://maven.apache.org/plugins/maven-ear-plugin/
我无法弄清楚如何升级到最新版本?
我有一个应用程序的EAR,我需要使用我自己的代码扩展此应用程序,该代码打包为WAR.是否有maven插件可以帮助我将WAR放入EAR?
手动过程是将WAR放入EAR并将模块添加到application.xml.我想自动化.
编辑:小澄清 - WAR项目使用maven但是对于EAR我只有二进制文件了.
我阅读了一些关于如何设置eclipse和maven以创建一个新的空耳项目的文章,但所有解决方案都不完整或已经过时.
我相信我需要创建三个pom.xml文件/或三个项目:
我在eclipse中使用集成的maven插件尝试了这个.由于(我相信Helios)maven已经集成在eclipse中.所以我去了
file - > new - > maven - > maven project
并取消选中"创建一个简单的项目"复选框.在另一边,我得到了原型目录.为了创建客户端项目,我查找了maven-archetype-webapp版本1.0.但是缺少WebContent\META-INF等所有文件夹.
那么如何创建所有三个项目都是将它们组合在一起?
非常感谢,Hauke
PS.:我在问题5668710中读到关于创建没有maven的项目并激活依赖关系管理.但这是正确的方法吗?我不这么认为.
通过Maven ear插件构建耳朵时,我体验到应用package不会clean导致不一致的结果:如果我更改了依赖项的版本,那么依赖项现在会在旧版本和新版本中出现两次.如果我在jar名称中构建没有版本号的耳朵,我只得到一个jar,但旧版本没有正确替换.
我查看了源代码
特别是来自436的行很有意思:检查是否更新目标文件,但显然只检查绝对路径和最后修改日期.
总结:我是否认为更改依赖项(或其版本)始终需要clean在构建之前调用?还是有一些package我错过的情报?
有人可以建议我解决方案,但有以下例外情况.我将创建一个多模块项目.
父项目名称是LOGICBACKEND
子项目名称DBAccess
我需要有LOGICBACKEND一个应该包含DBAccessprjoects jar文件的ear 文件.
我跑步时遇到异常mav clean install -P Developer.
[ERROR]The project com.project1.Database:DBAccess:1.0-SNAPSHOT (C:\Project1\DBAccess\pom.xml) has 1 error
[ERROR]Invalid packaging for parent POM com.project1.logic:LOGIC:1.0-SNAPSHOT (C:\Project1\pom.xml), must be "pom" but is "ear" @ com.project1.logic:LOGIC:1.0-SNAPSHOT, C:\Project1\pom.xml, line 6, column 13
Run Code Online (Sandbox Code Playgroud)
这是我的父pom.xml的一部分
<modelVersion>4.0.0</modelVersion>
<groupId>com.project1.logic</groupId>
<artifactId>LOGICBACKEND</artifactId>
<packaging>ear</packaging>
<version>1.0-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)
这就是child pom.xml的外观
<groupId>com.project1.logic</groupId>
<artifactId>DBAccess</artifactId>
<packaging>ejb</packaging>
<name>DBAccess</name>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>com.project1.logic</groupId>
<artifactId>DBAccess</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)
有谁可以帮我在这里了解这里出了什么问题.
在此先感谢您的帮助
我正面临以下问题:
无法在项目UserAdminEAR上执行目标org.apache.maven.plugins:maven-ear-plugin:2.7:generate-application-xml(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>
Run Code Online (Sandbox Code Playgroud)