# Maven Profiles - maven-exec-plugin



## Sascha84 (30. Apr 2010)

Hallo zusammen,
ich ibn auf ein Problem mit meinen Maven Profilen gestoßen.
Und zwer habe ich zwei Profile erstellt, welche jeweils das maven-exec-plugin aufrufen und java code ausführen sollen. Wenn ich Profile Nr. 2 ausführe läuft dies auch ohne Probleme durch, bei Profile 1 sagt er mir jedoch, dass <mainClass> nicht definiert ist, obwohl ich eine Klasse angegeben habe. Hat irgendwer eine Ahnung warum diese Fehlermeldung auftritt?


```
<profiles>
        <profile>
            <activation>
            <property><name>viewer</name></property>
            </activation>
            <build>
                <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.1</version>
                    <configuration>
                        <mainClass>de.monitor.tools.MonitorEventViewer</mainClass>
                        <arguments>
                          <argument>-Dfailonerror=true</argument>
                          <argument>-Dfork=true</argument>
                          <argument>-Dmaxmemory=1024</argument>
                        </arguments>
                        <systemProperties>
                              <systemProperty>
                                <key>monitor.events.file</key>
                                <value>../output/monitorEvents.out</value>
                              </systemProperty>
                        </systemProperties>
                    </configuration>
                    <executions>
                        <execution>
                              <goals>
                                <goal>java</goal>
                              </goals>
                              <id>viewer</id>
                          </execution>
                    </executions>
                </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <activation>
            <property><name>player</name></property>
            </activation>
            <build>
                <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.1</version>
                    <configuration>
                        <mainClass>de.monitor.tools.MonitorEventPlayer</mainClass>
                        <arguments>
                          <argument>-Dfailonerror=true</argument>
                          <argument>-Dfork=true</argument>
                          <argument>-Dmaxmemory=1024</argument>
                        </arguments>
                        <systemProperties>
                              <systemProperty>
                                <key>monitor.events.file</key>
                                <value>../output/test01/monitorEvents.out</value>
                              </systemProperty>
                        </systemProperties>
                    </configuration>
                    <executions> 
                        <execution>
                              <goals>
                                <goal>java</goal>
                              </goals>
                              <id>player</id>
                          </execution> 
                    </executions>
                </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
```

Also 

```
mvn exec:java -Dplayer
```
funktioniert
und bei

```
mvn exec:java -Dviewer
```
bekomm ich die Fehlermeldung <mainClass> nicht definiert.

Gruß
Sascha


----------



## Geeeee (30. Apr 2010)

Frag mich bitte nicht nach der 100%igen Ursache, aber gib deinen Profilen mal ids. Dann klappt das.


----------



## Sascha84 (30. Apr 2010)

Ah jo cool, danke für die antwort ... läuft jetzt.


----------



## kama (30. Apr 2010)

Hallo,



Geeeee hat gesagt.:


> Frag mich bitte nicht nach der 100%igen Ursache, aber gib deinen Profilen mal ids. Dann klappt das.


Das Problem ist einfach, dass unterschiedliche Profile auch einen eindeutigen Namen haben müssen....


```
mvn help:effective-profiles
```

bringt bei der obigen Konstellation zu Tage, dass es ein Profile "null" gibt...(die Fehlenden Id's)

Weiterhin würde ich Profile nicht per properties aktivieren sondern per -P Option, außer wo es absolut notwendig ist...


```
mvn -PprofileId ...
```

Das ist eindeutiger

Wenn man möchte, dass ein Profile per default aktiv ist, kann man das ja per:


```
<activation>
        <activeByDefault>true</activeByDefault>
</activation>
```
getrennt steuern.


Gruß
Karl Heinz Marbaise


----------



## Geeeee (30. Apr 2010)

Stimmt: mvn help:effective-profiles hatte ich schonmal gelesen, aber noch nie genutzt und ist deshalb wieder in Vergessenheit geraten gewesen bei mir 
Hatte auch noch nie Profile ohne ID, weil ich sie immer über sie anspreche.
Danke dir für die Infos.


----------

