2011-01-28 3 views
9

В настоящее время я использую IBM Rational Application Development (IBM Eclipse distro) для разработки портлетов и имеет небольшую проблему с интеграцией Maven.Maven для копирования JAR при добавлении зависимостей

Вот ситуация:

1) IBM RAD имеет возможность развернуть портлет непосредственно из себя (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, поэтому, когда я захочу RUN/DEBUG портлета, эти библиотеки не будут включены.

Вопрос:

Есть ли способ, чтобы скопировать новые JARs автоматически в// Lib папки WebContent WEB-INF, как только я обновить pom.xml? (если это так, в каком жизненном цикле это должно быть?)

Если нет идеального решения для вопроса №1, я не возражаю, если этот шаг включен в компиляцию/цель «mvn install».

Предпочитаете не использовать ant-task, а вместо этого использовать собственную утилиту копирования maven, если она существует.

Если у кого-то есть предложения по интеграции Maven и IBM RAD в разработку WebSphere Portlet, не стесняйтесь добавлять дополнительные ответы.

Благодаря

+0

Я не уверен, что это работает для IBM RAD, но с Eclipse WTP вы можете определить части сборки развертывания из свойств проекта. –

ответ

2

Вот Maven-pom.xml скелета Я выбрал из старого проекта RAD:

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

Это был применен к структуре каталогов, созданные при РАУ (версия 7.5, ориентируются портал 6.5.x на WAS 7). Это не единственный способ сделать это, и я уверен, что поморца можно улучшить, но это послужило своей цели. Добавьте соответствующие зависимости.

+0

Большое спасибо. Работайте как шарм. – xandross

1

У меня был тот же вопрос и вопросы, связанные с Maven и RAD. Я использую RAD 8 с М2Э и пытается автоматически развернуть/отладки портлетов для WebSphere Portal 7.

Во-первых, чтобы комментарий görkem в:

Я не уверен, если это работает для IBM RAD, но с Eclipse WTP вы можете определить части сборки развертывания из свойств проекта.

Это действительно работает в РАД. Я установил сборку своего проекта в соответствии со структурой сборки WebSphere и переместил свои зависимости Maven в папку WEB-INF \ lib (Project -> Properties -> Assembly -> Add -> Java Build Path Entries -> Maven Dependencies).

enter image description here

Эта конфигурация действительно позволяла мне успешно строить войну, и я могу экспортировать созданный файл EAR из РАУ и вручную установить его на моем локальном сервере, и он работает отлично. Однако параметры автоматического развертывания и «запускать на сервере» не работают с этим в одиночку. По какой-то причине он развертывает все транзитивные зависимости (portlet-api, servlet-api и т. Д.) В WebSphere, что вызывает конфликты и взрывы.

Поэтому я попробовал решение pom, предложенное McDowell с ограниченным успехом - он не будет компилировать и не запускать мои тесты правильно, хотя, когда я удалял тесты, они успешно развертывались с RAD. Я работаю с его помпой, чтобы включить тестирование, и опубликую мои результаты здесь, когда я получу его работу.

Я также нашел this thread, который содержит ссылку на 2010 IBM document на «официальный» способ интеграции Maven и RAD. Я работаю над этим и вижу, какое решение лучше отвечает моим потребностям. Опять же, если/когда у меня будет работа, я опубликую больше информации здесь.


Update 11/21/2011

IBM выпустила обновленный документ для интеграции Maven/RAD. Вы можете найти его here. Я прошел через это, и это очень хорошо сделано. Это шаг за шагом со скриншотами и немного фона на Maven, M2eclipse и WTP. Есть еще несколько неприятностей, которые Чак описывает в документе, но, в конце концов, это позволило нашей команде начать использовать Maven в среде WebSphere Portal без отказа от соглашений Maven. Надеемся, что другие найдут это полезным.

Смежные вопросы