2010-08-02 17 views
10

Tengo un proyecto grande de Java Web Application usando Maven y necesito comenzar un nuevo proyecto que compartirá la mayor parte del mismo código (para que no tenga que repetir el trabajo), pero no todo. Voy a copiar el código compartido en un nuevo proyecto (llamémoslo "raíz"). ¿Cómo puedo hacer que mi Proyecto original dependa de la raíz del código fuente? No puedo dejarlo porque quiero cambiar la fuente antes de compilar.¿Cómo se usa Maven para compartir el código fuente de dos proyectos?

Respuesta

8

Debe refactor sus proyectos.

  1. identificar el código común
  2. extracto que en su propio módulo experto
    2.1. generalmente las aplicaciones web son multimodulares, por lo que si va a compartir la biblioteca común en dos aplicaciones web, separe la biblioteca común en su propio ID de grupo
  3. Cree e instale el archivo jar en su repositorio
  4. cambie los poms de las aplicaciones web para que dependan de su nueva biblioteca
+0

Funciona para mí. Gracias. – teteArg

2

Cree un proyecto convencional que contenga todo su código compartido. Mantenga el empaque de este proyecto (en el pom.xml principal) como jar. Esto ayudaría a hacer de este proyecto un tipo de biblioteca para su uso.

En todos los proyectos que tienen acceso al código compartido, agregue la dependencia para este proyecto de acuerdo a sus necesidades. (compilar, provisto).

Ahora paquete e instalar el proyecto compartido antes de construir cualquiera de los proyectos dependientes. Esto agregará el proyecto compartido a su repositorio local que luego puede ser utilizado por sus proyectos dependientes.

Adición pom.xml muestra para proyectos compartidos y dependientes.

Proyecto compartido 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> 
    <parent> 
    <artifactId>com.myspace.test</artifactId> 
    <groupId>com.myspace</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <groupId>com.myspace</groupId> 
    <artifactId>shared</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>shared-module</name> 
    <description>shared module which contains code shared by other modules.</description> 
</project> 

pom del proyecto dependiente.

<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> 
    <parent> 
    <artifactId>com.myspace.test</artifactId> 
    <groupId>com.myspace</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <groupId>com.myspace</groupId> 
    <artifactId>dependent-module</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>dependent-module</name> 
    <description>Dependent module.</description> 
    <dependencies> 
    <dependency> 
     <groupId>com.myspace</groupId> 
     <artifactId>shared</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
</project> 

El proyecto primario se puede agregar opcionalmente en caso de que se requiera tal organización. Espero que esto ayude.

0

instalar el código compartido, usando la configuración actual de los envases frasco:

mvn install 

A continuación, puede crear una dependencia en el pom.xml hijo (el código que no se comparte) de cualquier repositorio que está instalando a.

Esta es una buena práctica, en general, no sólo para evitar la repetición de trabajo, sino también en caso de que desee cambiar la aplicación de los recursos compartidos. Puede cambiar la lógica en un lugar, instalarla en el repositorio y otros proyectos que dependen de ese código usarán el nuevo código la próxima vez que se compilen.

Cuestiones relacionadas