2012-01-16 15 views
5

Actualmente utilizamos MyEclipse para implementar nuestros proyectos en Tomcat durante el desarrollo. Nos gustaría descargar MyEclipse y cambiar a WTP. Estoy usando Eclipse 3.7.Implementación de proyectos dependientes en Tomcat a través de WTP

Nuestro diseño de proyecto tiene un proyecto 'web' y un proyecto 'modules'.

Me gustaría poder tener cada proyecto con su propio archivo ivy declarando sus dependencias usando IvyDE para crear una biblioteca Eclipse de aquellos jarrones que dependen de y tienen esos jars desplegados en WEB-INF/lib y las clases de cada uno proyecto implementado en WEB-INF/classes.

He intentado declarar el proyecto 'modules' como un "Módulo de utilidad" y los archivos jar de su archivo ivy.xml como parte del ensamblado de despliegue en WEB-INF/lib y luego agregar los proyectos de 'módulos' al Ensamblaje de Despliegue del proyecto 'web' pero lo que obtengo es un jar llamado 'modules.jar' en el proyecto WEB-INF/lib del 'web' que tiene los archivos jar para el proyecto 'modules' en su (es decir, modules.jar) directorio WEB-INF/lib.

¿Es posible implementar WTP desde la estructura de la aplicación que tengo para el diseño de implementación que quiero o debería reorganizar mis dos proyectos en uno solo? Si es así, ¿cómo lo haría?

Respuesta

1

No sé si esto ayudará, no entiendo su pregunta completamente.

Puedes decirle a ivyDe que descargue todos los frascos a un directorio específico.

  1. La opción "¿recuperar ..." Caja
  2. poner la ruta relativa a su WEB-INF/lib en el patrón recuperar como:

    recursos/WEB-INF/lib/[ artefacto] - [tipo] -. [revisión] [ext]

enter image description here

+0

Gracias por tomarse el tiempo para ayudar. Esto no es exactamente lo que estoy buscando, realmente no necesito que IvyDE me resuelva, hacer referencia a ellos en el caché local es correcto y WTP deploy los implementará desde la Biblioteca creada por IvyDE. El problema es que las bibliotecas a las que hace referencia el proyecto 'modules' se implementarán en el jar WTP crea para el proyecto 'modules' en lugar de en el WEB-INF/lib de la guerra para el proyecto 'web'. Estoy tratando de encontrar una solución que no me obligue a fusionar el proyecto 'módulo' en el proyecto 'web' solo para que la implementación WTP funcione. – Victor

1

creo que tenemos una configuración similar a lo que usted está tratando g para configurar. Asegúrese de marcar "Resolver dependencias en el espacio de trabajo" en el panel Preferencias> Ivy> Classpath.

Con la configuración a continuación, al agregar WarProject a Tomcat, debería ver un enlace [+] en el nodo WarProject y expandirlo debería mostrar el nodo JarProject. Al publicar, debe ver JarProject.jar y cualquier jar definido en ivy.xml agregado a wtpwebapps/WarProject/WEB-INF/lib en el directorio de publicación de Tomcat, que para mí está en .metadata/.plugins/org.eclipse.wst.server.core/tmp0 en mi directorio del espacio de trabajo.

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

del proyecto Jar .settings/org.eclipse.wst.common.component:

ivy.xml
<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> 

del proyecto Jar: Guerra del proyecto

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

del proyecto Guerra .settings/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> 
.classpath

del proyecto de la guerra:

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

del proyecto de guerra .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> 

También me pareció posible omitir el atributo org.eclipse.jst.component.dependency en la entrada de la ruta de clases para el contenedor ruta de clase de la hiedra y en lugar de agregarlo al archivo org.eclipse.wst.common.component así:

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

Pero bajo esta alternativa, el webapp desplegada no se actualizaba muy bien si cambiaba el archivo ivy.xml y ejecutaba la resolución. Además, cualquier cambio en los parámetros de URL a Ivy debía mantenerse sincronizado con los dos archivos o no se contribuiría nada al ensamblaje de implementación.

No hay idea de cómo configurar todo esto a través de la interfaz de usuario ...

Cuestiones relacionadas