Pregunta

He estado luchando para conseguir Maven2 a cooperar conmigo, y me preguntaba si alguien por ahí tiene alguna idea sobre cómo conseguir este trabajo .... estoy trabajando en un proyecto de Flash, y estamos considerando el cambio de nuestra Flex4 híbrido / FlashCS4 a una solución Flex4 puro. Nos gustaría usar el sistema de construcción Maven2, para que nuestros desarrolladores no tienen que descargar manualmente, instalar y configurar Flex4 en sus máquinas.

He conseguido crear un proyecto de un solo módulo utilizando Maven2 con Flex4 (estoy usando el Sonatype FlexMojos Plugin y su repositorio Maven2 se encuentra en href="http://repository.sonatype.org/content/groups/flexgroup/" rel="nofollow noreferrer"> http: //repository.sonatype .org / content / grupos / flexgroup / ). Realmente empiezan a correr en problemas cuando se trata de hacer esto multimódulo ....

Nuestro proyecto se organiza de la siguiente manera:

 |- bin
 |  |- moduleX.swf
 |  |- moduleY.swf
 |  |- ...
 |- lib
 |  |- moduleA.swc
 |  |- moduleB.swc
 |  |- ...
 |- src
 |  |- moduleA
 |  |- moduleB
 |  |- ...
 |- test
 |  |- moduleA
 |  |- moduleB
 |  |- ...
 |- share
 |  |- asset1
 |  |- asset2
 |  |- ...
 |- ...

Básicamente, cada uno de los módulos tiene sus fuentes situadas en "src / /" y sus fuentes de prueba se encuentra en "prueba / /", con los archivos SWF generados se colocan en "bin" y generan SWC los archivos que se colocan en "lib". Nuestros activos (cosas que nos gustaría ser capaz de hacer referencia mediante el "@Embed" o "[Insertar]" tags) vivir en "Compartir". He mirado en las referencias sobre la herencia del proyecto y la agregación, pero parece que no puede encontrar nada que nos permita mantener nuestra estructura de directorios existente. Nos gustaría que esta migración sea lo más rápida, indolora y sin interrupciones como sea posible. Realmente apreciaría si alguien puede encontrar la manera de crear un archivo "pom.xml" que nos permite mantener nuestra infraestructura actual.

¿Fue útil?

Solución

Si está seguro acerca de cómo mover a Maven 2, que le ahorrará mucho dolor de modificar la estructura del proyecto de manera que cada módulo contiene sus propias fuentes y pruebas y sigue las convenciones de Maven.

Si realmente no puede hacer eso, puede crear una jerarquía de módulos en paralelo, y configurar cada módulo con rutas relativas que apuntan a su estructura existente. La estructura podría terminar buscando algo como esto:

|- Maven Root
|   |- pom.xml
|   |- ModuleA 
|   |  |- pom.xml
|   |- ModuleB
|   |  |- pom.xml
|   |- ModuleX
|   |  |- pom.xml
|   |- ModuleY
|   |  |- pom.xml
|   |- asset1
|   |  |- pom.xml
|   |-...
|
|- Existing-Root
    |- bin
    |  |- moduleX.swf
    |  |- moduleY.swf
    |  |- ...
    |- lib
    |  |- moduleA.swc
    |  |- moduleB.swc
    |  |- ...
    |- src
    |  |- moduleA
    |  |- moduleB
    |-...

También puede añadir poms provisionales para que pueda construir conjuntos relacionados (por ejemplo, un pom share que contiene todos los módulos de acción).

A continuación, podría:

  • configurar cada pom con las rutas relativas apropiadas para que pueda construir sus fuentes.
  • configurar el experto-dependencia-plugin para descomprimir los recursos Embed en blanco / Flex / recursos
  • construir-helper-maven-plugin de objetivo de establecer / flex / recursos como una ubicación de recursos (tenga en cuenta esta realidad no puede trabajar, ya que el plugin espera que los recursos para estar en src / main / incrustar recursos)
  • definir las dependencias apropiadas entre módulos.
  • utilizar el maven-antRun-plugin para copiar los artefactos finales al directorio bin existente (si se intenta utilizar el mismo directorio de salida ajustando project.build.outputDirectory, pero luego una limpieza de un módulo se clobber otras formaciones).

Aquí está un ejemplo de configuración para alcanzar dichos pasos para uno de los poms:

<build>
  <!--configure the source and test sources to point to the existing structure-->
  <sourceDirectory>
    ${baseDir}/../../Existing-Root/test/${project.artifactId}
  </sourceDirectory>
  <testSourceDirectory>
    ${baseDir}/../../Existing-Root/src/${project.artifactId}
  </testSourceDirectory>
  <plugins>
    <plugin>
     <groupId>org.sonatype.flexmojos</groupId>
     <artifactId>flexmojos-maven-plugin</artifactId>
     <version>3.2.0</version>
     <extensions>true</extensions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>unpack</id>
          <phase>generate-resources</phase>
          <goals>
            <goal>unpack</goal>
          </goals>
          <configuration>
            <artifactItems>
              <!--unpack asset1 to target/flex/resources, 
                define any additional artifacts for other shares-->
              <artifactItem>
                <groupId>my.group.id</groupId>
                <artifactId>asset1</artifactId>
                <version>1.0.0</version>
                <type>swf</type>
              </artifactItem>
            </artifactItems>
            <outputDirectory>
              ${project.build.directory}/flex/resources
            </outputDirectory>
            <overWriteReleases>false</overWriteReleases>
            <overWriteSnapshots>true</overWriteSnapshots>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <!--add target/flex/resources as a resource location-->
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>1.3</version>
      <executions>
        <execution>
          <id>add-resource</id>
          <phase>generate-resources</phase>
          <goals>
            <goal>add-resources</goal>
          </goals>
          <configuration>
            <resources>
              <resource>
                <directory>
                  ${project.build.directory}/flex/resources
                </directory>
              </resource>
            </resources>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <phase>pre-integration-test</phase>
          <configuration>
            <tasks>
              <!--copy the final artifact to the module's bin directory-->
              <copy 
                file="${project.artifactId}-${project.version}.${project.packaging}"
                todir="${baseDir}/../../Existing-Root/bin/${project.artifactId}"/>
            </tasks>
          </configuration>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
  ...
 </build>

Otros consejos

Un proyecto de varios módulos debe tener este aspecto

Root
 |- Module a
 |  |- src
 |- Module b
 |  |- src
 |- Module c
 |  |- src

Tener múltiples fuentes en un solo proyecto está bien si usted planea en la construcción de un solo artefacto, pero Maven no coopera si usted está tratando de construir múltiples artefactos de múltiples fuentes en un solo proyecto.

Si no puede mover el árbol de fuentes alrededor; crear una jerarquía pom varios módulos en la estructura actual y editar el nuevo niño-pones a apuntar sus directorios src y de prueba a los directorios src y prueba de jerarquía fuente de corriente.

Puede tener las carpetas de salida apuntan a la misma carpeta también.

root
 |- ModuleA
 |  |- pom.xml, src points to root/src/moduleA
 |- ModuleB
 |  |- pom.xml, src points to root/src/moduleB
 |- src
 |  |- moduleA
 |  |- moduleB
 |  |- ...
 |- test
 |  |- moduleA
 |  |- moduleB
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top