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 Maven在添加依赖项时复制JAR_Java_Maven_Portlet_Ibm Rad - Fatal编程技术网

Java Maven在添加依赖项时复制JAR

Java Maven在添加依赖项时复制JAR,java,maven,portlet,ibm-rad,Java,Maven,Portlet,Ibm Rad,我目前正在使用IBMRationalApplicationDevelopment(IBMEclipseDistro)进行Portlet开发,在Maven集成方面有一个小问题 情况如下: 1) IBMRAD能够直接从自身内部部署Portlet(运行/调试) 在本例中,我根本不使用Maven生成的WAR,因为IBMRAD似乎自动创建WAR并将其推送到IBMWebSpherePortal。到目前为止这没什么大不了的 2) Maven依赖项不会复制到WebContent/WEB-INF/lib目录 IB

我目前正在使用IBMRationalApplicationDevelopment(IBMEclipseDistro)进行Portlet开发,在Maven集成方面有一个小问题

情况如下:

1) IBMRAD能够直接从自身内部部署Portlet(运行/调试)

在本例中,我根本不使用Maven生成的WAR,因为IBMRAD似乎自动创建WAR并将其推送到IBMWebSpherePortal。到目前为止这没什么大不了的

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

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

问题:

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

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

宁愿不使用ant任务,而是使用maven自己的复制实用程序(如果存在)

如果有人对如何集成Maven和IBMRAD进行WebSpherePortlet开发有任何建议,请随意添加更多答案


谢谢

这是我从一个旧的RAD项目中挑选出来的Maven 2 pom.xml框架:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>foo</groupId>
  <artifactId>fooproject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
    <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding>
  </properties>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <resources>
      <resource>
        <directory>src</directory>
        <includes><include>**/*.properties</include></includes>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1-beta-1</version>
        <configuration>
          <webappDirectory>${project.basedir}/WebContent</webappDirectory>
          <warSourceDirectory>${project.basedir}/WebContent</warSourceDirectory>
          <webXml>${project.basedir}/WebContent/WEB-INF/web.xml</webXml>
          <packagingIncludes>**/*.properties,**/*.jsp,**/*.jar,**/*.class,theme/**/*,images/**/*,**/*.xml,**/*.swf,**/*.tld,**/*.txt</packagingIncludes>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- compile classpath -->
  </dependencies>
</project>

4.0.0
福
食品项目
1.0-快照
战争
US-ASCII
src
${project.artifactId}-${project.version}
src
**/*.物业
真的
org.apache.maven.plugins
maven编译器插件
2.1
org.apache.maven.plugins
maven战争插件
2.1-β-1
${project.basedir}/WebContent
${project.basedir}/WebContent
${project.basedir}/WebContent/WEB-INF/WEB.xml
**/*.properties、***/.jsp、***/.jar、***/.class、主题/***、图像/***、***/.xml、***/.swf、***/.tld、***/.txt
真的

这已应用于RAD创建的目录结构(版本7.5,针对was 7上的Portal 6.5.x)。这不是唯一的方法,我相信pom可以改进,但它达到了它的目的。适当地添加依赖项。

我在集成Maven和RAD时遇到了同样的问题。我将RAD8与m2e一起使用,并尝试为WebSpherePortal7自动部署/调试portlet

首先,关于戈尔金的评论:


我不确定这是否适用于IBMRAD,但通过EclipseWTP,您可以从项目属性定义部署组件

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

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

因此,我尝试了McDowell提出的pom解决方案,但成效有限——它无法正确编译或运行我的测试,尽管当我删除测试时,它确实从RAD中成功部署。我正在利用他的pom进行测试,当我的测试成功后,我会将结果发布到这里

我还发现了一个链接,其中包含一个关于“官方”方式的链接,以集成Maven和RAD。我正在努力解决这个问题,并将看看哪个解决方案更能满足我的需求。同样,如果/当我有它的工作,我会张贴更多的信息在这里


2011年11月21日更新


IBM已经为Maven/RAD集成制作了一份更新的文档。你可以找到它。我已经经历过了,做得很好。这是一步一步的屏幕截图和一点关于Maven、M2eclipse和WTP的背景。Chuck在论文中描述了一些烦恼,但最后,它允许我们的团队在WebSpherePortal环境中开始使用Maven,而不放弃Maven约定。希望其他人会发现它很有用。

我不确定这是否适用于IBM RAD,但使用Eclipse WTP,您可以从项目属性中定义部署组件。非常感谢。效验如神