Maven在添加依赖项时复制JAR

我目前正在使用IBM Rational Application Development(IBM Eclipse发行版)进行Portlet开发,并且在Maven集成方面存在一个小问题。

这是情况:

1)IBM RAD能够直接从内部部署Portlet(RUN / DEBUG)

在这种情况下,我根本不使用Maven生成的WAR,因为IBM RAD似乎自动创建了WAR并将其推送到IBM WebSphere Portal。 到目前为止,这不是什么大问题。

2)Maven依赖项不会复制到WebContent / WEB-INF / lib目录

IBM有自己的目录结构:WebContent / WEB-INF和WebContent / META-INF。 如果我更新pom.xml以包含新的依赖项,那些JARS将不会被复制到WebContent / WEB-INF / lib目录,因此当我想要运行/调试portlet时,这些库将不会包含在内。

题:

有没有办法在我更新pom.xml后立即将新JAR自动复制到WebContent / WEB-INF / lib文件夹? (如果是这样,那应该是哪个生命周期?)

如果问题#1没有完美的解决方案,我不介意这个步骤是否包含在“mvn install”编译/目标中。

不希望使用ant-task,而是使用maven自己的复制实用程序(如果存在)。

如果有人建议如何集成Maven和IBM RAD以进行WebSphere Portlet开发,请随意添加更多答案。

谢谢

这是我从旧的RAD项目中选择的Maven 2 pom.xml骨架:

 4.0.0 foo fooproject 1.0-SNAPSHOT war  US-ASCII   src ${project.artifactId}-${project.version}   src **/*.properties true     org.apache.maven.plugins maven-compiler-plugin 2.1   org.apache.maven.plugins maven-war-plugin 2.1-beta-1  ${project.basedir}/WebContent ${project.basedir}/WebContent ${project.basedir}/WebContent/WEB-INF/web.xml **/*.properties,**/*.jsp,**/*.jar,**/*.class,theme/**/*,images/**/*,**/*.xml,**/*.swf,**/*.tld,**/*.txt   true           

这适用于RAD创建的目录结构(版本7.5,目标是WAS 7上的Portal 6.5.x)。 这不是唯一的方法,我确信可以改进pom,但它有助于实现它的目的。 根据需要添加依赖项。

我有相同的问题和集成Maven和RAD的问题。 我正在使用带有m2e的RAD 8并尝试自动部署/调试WebSphere Portal 7的portlet。

首先,关于Gorkem的评论:

我不确定这是否适用于IBM RAD,但使用Eclipse WTP,您可以从项目属性中定义部署程序集。

这在RAD中有效。 我已经设置了我的项目的部署程序集以匹配WebSphere构建结构并将我的Maven依赖项移动到WEB-INF \ lib文件夹(项目 – >属性 – >部署程序集 – >添加 – > Java构建路径条目 – > Maven依赖项)。

在此处输入图像描述

这个配置允许我成功构建战争,我可以从RAD导出生成的EAR文件并手动将其部署到我的本地服务器,它工作正常。 但是,自动部署和“在服务器上运行”选项不能单独使用它。 由于某种原因,它会将所有传递依赖项(portlet-api,servlet-api等)部署到WebSphere,从而导致冲突和爆炸。

因此,我尝试了McDowell提出的pom解决方案,取得了有限的成功 – 它不能正确编译或运行我的测试,但是当我删除测试时它确实从RAD部署了。 我正在使用他的pom进行测试,并在我开始工作时将结果发布到此处。

我还发现这个post包含一个2010年IBM文档的链接,该文档以“官方”方式集成Maven和RAD。 我正在研究它,并将看到哪种解决方案更能满足我的需求。 再次,如果/当我有它工作,我会在这里发布更多信息。


2011年11月21日更新

IBM已经为Maven / RAD集成生成了一个更新的文档。 你可以在这里找到它。 我已经完成了它并且做得非常好。 它是一步一步的截图和Maven,M2eclipse和WTP的一些背景知识。 Chuck在论文中描述了一些烦恼,但最终,它允许我们的团队在WebSphere Portal环境中开始使用Maven而不放弃Maven约定。 希望其他人会发现它很有用。