Patrones de lanzamiento de Maven

Soy nuevo en Maven e intento entender cómo lanzar mi proyecto. Tengo la siguiente configuración de proyecto en svn:

trunk
  |-deployer
  |    |-pom.xml
  |-webapp
  |    |-pom.xml
  |-utils      
       |-pom.xml

Mientras desarrollo webapp , siempre quiero desarrollar contra la última versión instantánea de utils, así que declaro la dependencia de utils en webapp / pom.xml a través de:

com.company utils 1.0-SNAPSHOT

Webapp también está actualmente versionado en la versión 1.0-SNAPSHOT. Es pom.xml tiene la declaración:

<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Sample Webapp</name>

Así que todo funciona muy bien, pero ahora quiero lanzar mi software. En el desplegador, tengo lo siguiente en 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>

  <groupId>com.company</groupId>
  <artifactId>deployer</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Project Release</name>

  <modules>
    <module>externals/webapp</module>
  </modules>

  <properties>
    <url.svn>http://<my-server>/<project>/trunk</url.svn>
  </properties>
  <scm>
    <connection>scm:svn:${url.svn}</connection>
  </scm>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <tagBase>
            http://<my-server>/<project>/tags
          </tagBase>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <distributionManagement>
    <repository>
      <id>Releases</id>
      <name>Releases</name>
      <url>http://<nexus-server>/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
      <id>Snapshots</id>
      <name>Snapshots</name>
      <url>http://<nexus-server>/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

</project>

Dentro de la carpeta del desplegador en sí, tengo una carpeta llamada "externos" que tiene un svn-externo configurado para revisar mi proyecto de aplicación web (agregué esto porque Maven se quejó de no poder encontrarlo), por lo que la ruta de mis módulos debería ser correcta.

Preguntas

1.) Quiero lanzar una versión de mi aplicación web, pero cuando ejecuto un mvn release:preparey mvn release:performen mi proyecto de implementación, mi único resultado tangible es mi tronco etiquetado en svn y un pom cargado en mi repositorio nexus. Esto tiene sentido porque mi paquete de artefactos de despliegue es de tipo "pom", pero tampoco hace el trabajo de hacerme una guerra contra mi aplicación web (debo señalar aquí que si hago un lanzamiento en el proyecto de aplicación web por sí mismo sin embargo, que conseguiré la guerra). Necesito liberar varios módulos, por lo que pensé que podría usar la agregación de Maven del proyecto de implementación para lograr esto, pero no parece estar funcionando.

2.) ¿Hay una mejor manera de lograr lo que estoy tratando de hacer?

Gracias por cualquier información que pueda proporcionar.

Respuesta 1

Debe ejecutar el complemento maven-release contra cada módulo que desee liberar. Nunca he visto a alguien tener un módulo "desplegador" especial que libere los otros módulos, así no es como se hacen las cosas comúnmente.

Normalmente, para liberar el módulo webapp, ejecutaría los comandos contra el módulo webapp, y para liberar el módulo utils, ejecutaría los comandos contra el módulo utils.

Si tiene un módulo principal que une la aplicación web y la utilidad, creo que puede ejecutar los comandos de lanzamiento en ese sentido.

Respuesta: 2

En mi aplicación, quiero usar múltiples CountDownTimer para mostrar el tiempo restante de las ofertas en un RecyclerView. He escrito el código a continuación en Kotlin, pero mientras se desplaza, los temporizadores siguen reiniciando ...

Estoy usando Spring, MySQL e Hibernate devolviendo el valor Fuera de rango ajustado para la columna 'row_id' e intento insertar una fila en mi base de datos pero recibo el siguiente error: Hibernate: ...

EDITAR: ¡RESUELTO! Simplemente olvidé incluir una declaración 'else' debajo de 'else if' que hace una declaración en blanco. Estoy usando Java, y estoy haciendo un juego de Buscaminas. Estoy tratando de abrir todos los vacíos adyacentes ...

He instalado maven 3.6.0 en mi mac usando homebrew. Cuando intento mvn --version en mi terminal, obtengo el Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T05: 41: 47 + 11: 00) ...