generar directorio como archivo abrir java web-applications maven-plugin

java - como - directorio web-inf



¿Cómo puedo agregar archivos war a otras dependencias de aplicaciones web de java? (2)

En Maven, agregar dependencia es solo un pedazo de pastel. Echa un vistazo a los siguientes 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> <!-- Project Details --> <groupId>ykyuen</groupId> <artifactId>project-apple</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>project-apple</name> <dependencies> <!-- project-apple depends on project-banana --> <dependency> <groupId>ykyuen</groupId> <artifactId>project-banana</artifactId> <version>1.0</version> </dependency> </dependencies> </project>

Establecer la dependencia anterior es lo mismo que importar el proyecto-banana.jar en el proyecto-apple.

Ahora tengo otro proyecto de aplicación web de Maven llamado project-orange con el tipo de empaquetado que equivale a war. Agregar el enlace de dependencia anterior no funciona en absoluto ya que Java no ve el archivo .war como una ruta de clase.

Para resolver el problema, hay dos enfoques:

  1. Cree un módulo de Maven que contenga las clases de proyecto-orange con empaquetado de tarro. Ahora puede tratar el nuevo módulo de Maven como una dependencia normal.

  2. Configure el plugin maven-war de tal manera que compile el archivo .jar al compilar el archivo .war. Agrega el siguiente código debajo del nodo de tu proyecto de guerra. Lo siguiente es un ejemplo.

.

... <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <attachClasses>true</attachClasses> <classesClassifier>classes</classesClassifier> </configuration> </plugin> </plugins> </build> ...

Después de ejecutar mvn install, puede encontrar los siguientes archivos comprimidos en la carpeta de destino

  • proyecto-orange.war
  • proyecto-orange-classes.jar

Ahora puede editar el pom.xml de project-apple para agregar la nueva dependencia.

<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> <!-- Project Details --> <groupId>ykyuen</groupId> <artifactId>project-apple</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>project-apple</name> <dependencies> <!-- project-apple depends on project-banana --> <dependency> <groupId>ykyuen</groupId> <artifactId>project-banana</artifactId> <version>1.0</version> </dependency> <!-- project-apple depends on project-orange --> <dependency> <groupId>ykyuen</groupId> <artifactId>project-orange</artifactId> <version>1.0</version> <!-- To map the project-orange-classes.jar --> <classifier>classes</classifier> </dependency> </dependencies> </project>

referencia : http://eureka.ykyuen.info/2009/10/30/maven-dependency-on-jarwar-package/

Tengo proyecto web maven. La salida del proyecto es un archivo de war . Quiero agregar este archivo de war como dependencia a project_b.
El archivo pom.xml del project_b, tiene un complemento como sigue:

... <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <warName>geoserver</warName> <webappDirectory>${project.build.directory}/geoserver</webappDirectory> <packagingExcludes>WEB-INF/lib/servlet-api*.jar</packagingExcludes> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <GeoServerModule>core</GeoServerModule> <Application-Name>${project.build.finalname}</Application-Name> <Project-Version>${project.version}</Project-Version> <Iteration-Name>${iteration}</Iteration-Name> <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> <Git-Revision>${build.commit.id}</Git-Revision> </manifestEntries> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>war</goal> </goals> </execution> </executions> </plugin> ...

¿Cómo agrego la aplicación war of web a project_b con <groupId>org.itsme</groupId> , <artifactId>spring3-mvc-maven-xml-hello-world</artifactId> , <packaging>war</packaging> y <version>1.0-SNAPSHOT</version> ?


Recientemente, también estaba enfrentando el mismo problema. Así es como lo resolví muy simple.

Paso 1: En el pom del proyecto original (No depende de ningún proyecto) Configure el complemento de guerra de maven de tal manera que genere la guerra y el tarro. El archivo jar se cargará en el repositorio de Maven cuando hagamos una instalación limpia.

Mi primera parte de pom se veía así:

<modelVersion>4.0.0</modelVersion> <groupId>com.pancharatna</groupId> <artifactId>TestWebApp</artifactId> **<packaging>jar</packaging>** <version>1.0-SNAPSHOT</version>

A continuación, agregue otro plugin en la sección de compilación:

<build> <finalName>TestWebApp</finalName> <plugins> **<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <executions> <execution> <id>make-a-war</id> <phase>compile</phase> <goals> <goal>war</goal> </goals> </execution> </executions> </plugin>** <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>

Paso 2: En el segundo proyecto (que depende del primer proyecto), coloque la jarra de dependencia (Proyecto original) en el pom.

<dependency> <groupId>com.pancharatna</groupId> <artifactId>TestWebApp</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope> </dependency>

Paso 3: Haga mvn clean install para el proyecto y luego para el segundo proyecto

Paso 4: Opcional: en lugar de construir los proyectos de forma secuencial y por separado, como se mencionó en el Paso 3, podemos crear un pom principal. Podemos simplemente ejecutar mvn clean install .:

C:/Test/ ├───Project1 │ └───src/main/... │ └───pom.xml │ ├───Project2 │ └───src/main/... │ └───pom.xml │ ├───pom.xml <!-- parent pom --> <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>com.MyApp</groupId> <artifactId>myproject</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <name>myproject</name> <url>http://maven.apache.org</url> </dependencies> <modules> <module>/Project1</module> <module>/Project2</module> </modules> </project>