Развертывание зависимых проектов в Tomcat через WTP - PullRequest
5 голосов
/ 16 января 2012

В настоящее время мы используем MyEclipse для развертывания наших проектов в Tomcat во время разработки. Мы хотели бы сбросить MyEclipse и переключиться на WTP. Я использую Eclipse 3.7.

В макете нашего проекта есть «веб» и «модули».

Мне бы хотелось, чтобы у каждого проекта был свой собственный файл ivy, объявляющий о своих зависимостях с помощью IvyDE для создания библиотеки Eclipse, в которой эти jar-файлы зависели, и чтобы эти jar-файлы были развернуты в WEB-INF / lib и в классах из каждого проекта. развернут в WEB-INF / classes.

Я попытался объявить проект «модули» как «Модуль утилит» и файлы jar из его файла ivy.xml как часть сборки развертывания в WEB-INF / lib, а затем добавить проекты «модулей» в Сборка развертывания проекта «web», но я получаю jar под названием «modules.jar» в WEB-INF / lib проекта «web», в котором есть jar для проекта «modules» ( ie modules.jar) Каталог WEB-INF / lib.

Можно ли заставить WTP развертываться из имеющейся у меня структуры приложения в макет развертывания, который я хочу, или мне придется реорганизовать два моих проекта в один? Если так, как бы я это сделал?

Ответы [ 2 ]

1 голос
/ 04 апреля 2012

Я считаю, что у нас есть конфигурация, аналогичная той, которую вы пытаетесь настроить.Убедитесь, что у вас установлен флажок «Разрешить зависимости в рабочей области» в разделе «Предпочтения»> «Плющ»> «Путь к классам».

При настройке ниже при добавлении WarProject в Tomcat вы должны увидеть ссылку [+] на узле WarProject иРасширение должно показать узел JarProject.При публикации вы должны видеть JarProject.jar и все jar-файлы, определенные в его ivy.xml, добавленные в wtpwebapps/WarProject/WEB-INF/lib в каталоге публикации Tomcat, который для меня находится в .metadata/.plugins/org.eclipse.wst.server.core/tmp0 в моем каталоге рабочего пространства.

проекта Jar.settings / org.eclipse.wst.common.project.facet.core.xml:

<faceted-project>
  <fixed facet="jst.java" />
  <fixed facet="jst.utility" />
  <installed facet="jst.java" version="1.6" />
  <installed facet="jst.utility" version="1.0" />
</faceted-project>

.settings / org.eclipse.wst.common.component проекта Jar:

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="JarProject">
    <wb-resource deploy-path="/" source-path="/src" />
    <wb-resource deploy-path="/" source-path="/resources" />
  </wb-module>
</project-modules>

Iv.xml проекта Jar:

<ivy-module
    version="2.0"
    xmlns:m="http://ant.apache.org/ivy/maven"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info module="JarProject" organisation="org.whatever" revision="${revision}" />
  <configurations>
      <conf name="local" visibility="private"
        description="Artifacts necessary for local development and testing" />
      <conf name="master" />
      <conf name="sources" />
  </configurations>
  <publications>
      <artifact ext="pom" type="pom" />
      <artifact ext="jar" type="jar" conf="master" />
      <artifact ext="jar" type="source" conf="sources" m:classifier="sources" />
  </publications>

  <dependencies defaultconfmapping="*->master(default),runtime()">
    <dependency org="org.jdom" name="jdom" rev="1.0" conf="master" />
    <dependency org="junit" name="junit-dep" rev="4.9" conf="local" />
  </dependencies>
</ivy-module>

.settings / org.eclipse.wst.common.project.facet.core.xml военного проекта:

<faceted-project>
  <fixed facet="jst.java" />
  <fixed facet="jst.web" />
  <installed facet="jst.java" version="1.6" />
  <installed facet="jst.web" version="2.5" />
  <runtime name="Apache Tomcat v6.0" />

.set ofs / org.eclipse.wst.common.component военного проекта:

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="WarProject">
    <property name="context-root" value="WarProject" />
    <wb-resource deploy-path="/" source-path="/WebContent" />
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src" />
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/resources" />
  </wb-module>
</project-modules>

.cathpath военного проекта:

<classpath>
  <classpathentry kind="output" path="bin" />
  <classpathentry kind="src" path="src" />
  <classpathentry kind="src" path="resources" />
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
    <attributes>
      <attribute name="owner.project.facets" value="jst.java" />
    </attributes>
  </classpathentry>
  <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0">
    <attributes>
      <attribute name="owner.project.facets" value="jst.web" />
    </attributes>
  </classpathentry>
  <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&amp;confs=local&amp;ivySettingsPath=%24%7Bworkspace_loc%3AWarProject%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;propertyFiles=" />
  <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&amp;confs=master&amp;ivySettingsPath=%24%7Bworkspace_loc%3AWarProject%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;propertyFiles=">
    <attributes>
      <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib" />
    </attributes>
  </classpathentry>
  <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container" />
</classpath>

ivy.xml военного проекта:

<ivy-module
    version="2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info module="WarProject" organisation="org.whatever" revision="${revision}" />
  <configurations>
    <conf name="local" visibility="private"
      description="Artifacts necessary for local development and testing" />
    <conf name="master" />
  </configurations>

  <dependencies defaultconfmapping="*->master(default),runtime()">
    <dependency org="org.whatever" name="JarProject" rev="latest.integration" changing="true" conf="master" />
    <!-- and other dependencies of the war project -->
  </dependencies>
</ivy-module>

Я также счел возможным опустить атрибут org.eclipse.jst.component.dependency в записи classpath для контейнера пути к классу Ivy и вместо этого добавить его в файл org.eclipse.wst.common.component, например:

<dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/con/org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&amp;confs=master&amp;ivySettingsPath=%24%7Bworkspace_loc%3AWarProject%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;propertyFiles=">
  <dependency-type>consumes</dependency-type>
</dependent-module>

Но в соответствии с этой альтернативой развернутое веб-приложение обновлялось не очень хорошо, если я изменил ivy.xml и запустил resolv.Кроме того, любые изменения параметров URL для Ivy необходимо синхронизировать с этими двумя файлами, иначе сборка развертывания не поможет.

Не знаю, как настроить все это через пользовательский интерфейс..

1 голос
/ 25 января 2012

Не знаю, поможет ли это, я не совсем понимаю ваш вопрос.

Вы можете указать ivyDe загрузить все файлы jar в определенный каталог.

  1. установите флажок «Do retrieve ...»
  2. и укажите относительный путь к вашему WEB-INF / lib в шаблон извлечения, например:

    resources / WEB-INF / lib /[артефакт] - [тип] - [ревизия]. [ext]

enter image description here

...