Problem mit Maven

Hi Leute,
ich hab ein Problem mit Maven, das mich echt irre macht. Ich muss gerade ein Programm schreiben, dass ich nur auf einem remote-Rechner testen kann. Entsprechend muss ich das Programm erst builden, lade es dann via ant-script auf den remoterechner und starte es direkt mit dem gleichen ant-script. Das Problem ist, dass Maven das Main-Class Attribut nicht mit an die manifest übergibt… ich hab stundenlang gegooglet an den Einstellungen rumgespielt und sonstiges. Ich hab dieses Problem schon länger, aber jetzt bei diesem Projekt macht es mich einfach nur wahnsinnig.

Meine pom.xml sieht aus wie folgt

[XML]

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<parent>
    <groupId>main.production</groupId>
    <artifactId>master</artifactId>
    <version>0.0.0-SNAPSHOT</version>
</parent>

<groupId>GetFileOverSFTP</groupId>
<artifactId>GetFileOverSFTP</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>com.jcraft.jsch</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.48</version>
    </dependency>

    <!--AspectJ Imports-->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.7.2</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjtools</artifactId>
        <version>1.7.0</version>
    </dependency>
    <!--AspectJ Imports End-->
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>main.transfer.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>
[/XML]

ich verwende als IDE IntelliJ IDEA.
Wenn mir hier jemand weiterhelfen kann, wäre ich äußerst dankbar…

Mit kurzem googlen hättest du das Problem auch selbst lösen können :wink:

Hier mal das Zitat von der maven-assembly-plugin Seite (Apache Maven Assembly Plugin – Usage):

Advanced Configuration
Creating an Executable JAR

As you’ve no doubt noticed, the Assembly Plugin can be a very useful way to create a self-contained binary artifact for your project, among many other things. However, once you’ve created this self-contained JAR, you will probably want the ability to execute it using the -jar JVM switch.

To accommodate this, the Assembly Plugin supports configuration of an element which is handled by maven-archiver (see Resources). Using this configuration, it’s easy to configure the Main-Class attribute of the JAR manifest:

[...] [...] maven-assembly-plugin 2.4 [...] org.sample.App [...] [...]

If we add this configuration to the single goal example above and rebuild, we will see an entry like this in the META-INF/MANIFEST.MF file of the resulting JAR:

[…]
Main-Class: org.sample.App

For more information on advanced configuration for the Assembly Plugin, see the Resources section.

Wie baust du denn?

Welche Jar hat kein mainCLass Attribute, die normale Jar oder die jar-with-dependencies?

geht auch mit dem maven-jar-plugin

[XML]


org.apache.maven.plugins
maven-jar-plugin
2.4



mein.paket.MeineMainKlasse






[/XML]

mit dem jar-plugin hab ichs ja oben versucht und das klappte nicht.
Aber danke, die Lösung von mvitz hats gelöst. Ich hatte am Ende das assembly-plugin und das jar-plugin drinnen. Die haben sich wohl irgendwie gestochen. Ich hab das jar-plugin rausgenommen und den Rest wie folgt konfiguriert, was das Problem gelöst hat ^^

[XML]

maven-assembly-plugin


package

attached





jar-with-dependencies



main.transfer.MainClass




[/XML]

Das Problem ist ganz einfach. Das assembly Plugin merged in deinem Falle ja alle JARs zusammen. Nun hat halt jede JAR sein eigenes MANIFEST.MF und das Assembly Plugin weiß nun halt nicht, welches es behalten soll.