java - Maven添加依赖时复制JAR

标签 java maven portlet ibm-rad

我目前正在使用 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 框架:

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

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

关于java - Maven添加依赖时复制JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831831/

相关文章:

java - 在 Portlet 中安排任务

java - 返回修改后的整数,但我的 getter 函数不会修改它。有任何想法吗?

java - 如何从命令行查找数组中最常重复的数字?

java - 在多个 fragment 中使用 BroadcastReceiver

java - 在 Google Sheets v4 API 中添加行 - 如何?

android - maven构建android项目: specify the location of aidl file

java - 根据 maven android 构建配置文件更新应用程序名称和 Logo

java - 在 Spring MVC 项目中使用自定义 jar

spring - 如何更改找到 bean 的上下文路径

java - 如何在 Portlet (IPC) Liferay portlet 之间传递对象