bubble: Maven 3 - Erzeugen einer Testumgebung

Hallo,

ich konvertiere mein Projekt zu einem Maven Multi-Modul-Projekt.

"projekt" sei das "Hauptprojekt", dass hat eigentlich gar kein Code,
"projekt.api", "projekt.core", "projekt.irc", "projekt.ident", usw. sind Modulprojekte, wobei alle Abhängig von "projekt.api" sind, und werden alle zu JAR-Archiven.

Desweiteren haben einige der Module org.apache.commons.io in Version 2.4 als dependency eingerichtet.

Das Erzeugen dieser ist kein Problem, ich würde nur irgendwie Maven veranlassen wollen, mir auch eine Testumgebung zu erzeugen wo ich das System dann mal komplett durchlaufen lassen kann und nicht immer manuell Dateien ersetzen muss.

Folgendes soll die resultierende Verzeichnisstruktur werden:

/path/to/testenv/bin/projekt.core-1.0.0.jar
/path/to/testenv/bin/projekt.ident-1.0.0.jar
/path/to/testenv/lib/projekt.api-1.0.0.jar
/path/to/testenv/lib/org.apache.commons.io-2.4.jar
/path/to/testenv/modules/projekt.irc-1.0.0.jar

Nur weiß ich leider nicht wie, da ich zum ersten mal mit Maven arbeite.

Die pom.xml-Dateien sehen alle relativ gleich aus:

<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/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <artifactId>projekt.core</artifactId>  
  <name>Projekt Core</name>  
  
  <build>  
    <resources>  
        <resource>  
            <directory>src/main/resources</directory>  
            <filtering>true</filtering>  
        </resource>  
        <resource>  
            <directory>src/test/resources</directory>  
            <filtering>true</filtering>  
        </resource>  
    </resources>  
  </build>  
  
  <parent>  
  	<groupId>projekt</groupId>  
  	<artifactId>Projekt</artifactId>  
  	<version>1.0.0</version>  
  	<relativePath>..\Projekt</relativePath>  
  </parent>  
  <dependencies>  
    <dependency>  
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.11</version>  
      <scope>test</scope>  
    </dependency>  
  	<dependency>  
  		<groupId>projekt</groupId>  
  		<artifactId>projekt.api</artifactId>  
  		<version>1.0.0</version>  
  	</dependency>  
  	<dependency>  
	    <groupId>org.jdom</groupId>  
	    <artifactId>jdom2</artifactId>  
	    <version>2.0.5</version>  
	</dependency>  
  	<dependency>  
	    <groupId>org.apache.directory.studio</groupId>  
	    <artifactId>org.apache.commons.io</artifactId>  
	    <version>2.4</version>  
	</dependency>  
  </dependencies>  
</project>

Und hier die pom.xml vom Hauptprojekt:

<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/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  
  <groupId>projekt</groupId>  
  <artifactId>Projekt</artifactId>  
  <version>1.0.0</version>  
  <packaging>pom</packaging>  
  
  <name>Projekt</name>  
  
  <properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  </properties>  
  <build>  
    <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <version>3.2</version>  
        <configuration>  
          <source>1.7</source>  
          <target>1.7</target>  
        </configuration>  
      </plugin>  
    </plugins>  
  </build>  
  
  <dependencies>  
    <dependency>  
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.11</version>  
      <scope>test</scope>  
    </dependency>  
  </dependencies>  
  <modules>  
  	<module>../projekt.api</module>  
  	<module>../projekt.core</module>  
  	<module>../projekt.ao</module>  
  	<module>../projekt.ident</module>  
  	<module>../projekt.irc</module>  
  </modules>  
</project>

Das waren jetzt so ca. alle Informationen von denen ich denke das sie relevant sind.

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  1. Hallo,

    Das Erzeugen dieser ist kein Problem, ich würde nur irgendwie Maven veranlassen wollen, mir auch eine Testumgebung zu erzeugen wo ich das System dann mal komplett durchlaufen lassen kann und nicht immer manuell Dateien ersetzen muss.

    Vorneweg: Evtl. ist da Maven das falsche Tool - die Idee von Maven ist, dass hinten immer genau ein Artefakt (ein "Release", ein "Build" oder wie Du es nennen willst) rausfällt, welches Du dann auf die verschiedenen Umgebungen (Testumgebungen, Abnahmeumgebung, Produktivumgebung usw.) deployst.

    Für Deployments wäre evtl. Jenkins was für Dich.

    Wenns nur darum geht, ein paar Konfigurations-Dateien für bestimmte Umgebungen umzubennen, kannst Du das aber mit dem Ant-Plugin realisieren.

    Beispiel-Ausschnitt aus einem meiner Projekte:
    Der folgende Code-Schnippsel dient dazu, mir die Datenbank-Konfiguration für die Test-Umgebung (database_test.properties) dorthin zu kopieren, wo sie dann die Software zum Ausführen benötigt (database.properties). Eine ähnliche Konfiguration habe ich auch für die Produktivumgebung, somit kann

      
    <plugin>  
      <artifactId>maven-antrun-plugin</artifactId>  
      <executions>  
      	<execution>  
      	   <id>copy-properties</id>  
      	   <phase>test</phase>  
               <goals>  
               	<goal>run</goal>  
               </goals>  
               <configuration>  
                  <tasks>  
               	<delete file="${project.build.outputDirectory}/database.properties"/>  
               	<copy file="${project.build.outputDirectory}/database_test.properties"  
               		tofile="${project.build.outputDirectory}/database.properties"/>  
    	      </tasks>  
               </configuration>  
             </execution>  
       </executions>  
      </plugin>  
    
    

    Hope that helps.

    Viele Grüße,
    Jörg

    1. Hallo,

      Für Deployments wäre evtl. Jenkins was für Dich.

      Jenkins wird mir nicht wirklich dabei helfen, 1. bin ich noch weit weg vom Niveau her um Proekte so zu organisieren, dass ich eine CI einsetzen kann, 2. keine git-Unterstützung soweit ich das sehe.

      Wenns nur darum geht, ein paar Konfigurations-Dateien für bestimmte Umgebungen umzubennen, kannst Du das aber mit dem Ant-Plugin realisieren.

      Ich denke ich werde das ganze mit Ant umsetzen, das versteh ich wenigstens :'D

      Generell sollte ich vllt noch mal ein wenig mehr nachlesen, was wofür gedacht ist da Maven ja anscheinend nicht nativ zur Lösung meines Problems vorgesehen ist :s

      Danke für die zielführende Hilfe und die Eröffnung einer neuen Perspektive!

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye