IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Projet Maven impossible à exporter via maven-shade-plugin


Sujet :

Maven Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut Projet Maven impossible à exporter via maven-shade-plugin
    Bonjour à tous,

    vieux développeur Java mais ayant interrompu il y a quelques années, je me remets à jour notamment sur un outil que je n'utilisais pas : Maven. Je précise que j'utilise Eclipse comme IDE. J'ai commencé un projet avec des composants JavaFX, dont j'ai absolument besoin.

    J'arrive à parfaitement maîtriser la bête pour lancer mes projets depuis Eclipse, mais je me trouve bloqué dès lors que j'essaie d'exporter cela en package via le maven-shade-plugin. Le build passe sans problème et je me retrouve avec apparemment tout ce qu'il faut dans /MonProjet/target ... mais si je lance l'exécution, Java se plaint "Could not find or load main class".

    J'ai retenté en partant sur un exemple extrêmement simple, tiré d'un archetype Maven simple.

    Je tente de vous mettre ci-dessous les détails de mon projet et de mon pom.xml pour voir si vous trouvez quelque chose qui ne va pas, car je tourne en rond depuis un moment et je n'arrive pas à comprendre :-(

    Merci d'avance !

    Arno

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    L'architecture de mon projet :

    Nom : Capture d’écran 2022-03-14 143440.png
Affichages : 139
Taille : 14,8 Ko

    Mon pom.xml :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <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.baboutini</groupId>
        <artifactId>testJFX</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-controls</artifactId>
                <version>17.0.1</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <release>11</release>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-maven-plugin</artifactId>
                    <version>0.0.8</version>
                    <executions>
                        <execution>
                            <!-- Default configuration for running -->
                            <!-- Usage: mvn clean javafx:run -->
                            <id>default-cli</id>
                            <configuration>
                                <mainClass>com.baboutini.testJFX.App</mainClass>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
    				<version>3.2.4</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <shadedArtifactAttached>true</shadedArtifactAttached>
                                <transformers>
                                    <transformer implementation=
                                                         "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>com.baboutini.testJFX.App</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Est-ce que cela peut venir d'un mauvais paramétrage dans Eclipse (puisque visiblement c'est un problème de classpath) ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 960
    Points : 4 390
    Points
    4 390
    Par défaut
    Il manquerait le MANIFEST…

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Merci JeitEmgie pour ta réponse, je me sentais un peu seul

    Comment est généré ce MANIFEST ? Est-ce un processus automatisé dans Maven ? Est-ce que je dois explicitement le déclarer quelque part dans le pom.xml ? Est-ce un réglage manquant que je dois faire dans Eclipse ?

    Merci d'avance pour tes éclaircissements

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 960
    Points : 4 390
    Points
    4 390
    Par défaut
    ajouter le maven-jar-plugin au pom avec
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <configuration>      
    <archive>        
    <manifest>        
    <mainClass>Your main class</mainClass>        
    </manifest>      
    </archive>   
     </configuration>

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    OK, j'ai résolu mon problème, c'était complexe mais ton message m'a mis sur la voie.

    1) j'ai ajouté un fichier MANIFEST.MF dans mon projet : src/main/resources > META-INF > MANIFEST.MF
    => je me suis retrouvé alors avec l'erreur :
    no main manifest attribute, in testJFX-0.0.1-SNAPSHOT.jar

    2) visiblement ça vient d'un bug sur les transforms du maven-shade-plugin (voir ce post), il faut explicitement déclarer la main class dans le maven-jar-plugin pour que le maven-shade-plugin fonctionne correctement :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		    <plugin>
    		      <groupId>org.apache.maven.plugins</groupId>
    		      <artifactId>maven-jar-plugin</artifactId>
    		      <version>3.0.2</version>
    		      <configuration>
    		        <archive>
    		          <manifest>
    		            <addClasspath>true</addClasspath>
    		            <mainClass>com.baboutini.testJFX.App</mainClass>
    		          </manifest>
    		        </archive>
    		      </configuration>
        		</plugin>

    => là je me suis retrouvé avec une nouvelle erreur :
    Error: JavaFX runtime components are missing, and are required to run this application

    3) bon, on avance ! J'ai trouvé la réponse dans un autre post : il ne faut pas que la mainClass extends Application, pfff !!! Donc j'ai rajouté une bête classe Main qui ne fait qu'appeler App.main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Main {
        public static void main(String[] args) {
            App.main(args);
        }
    }
    et ensuite bien sûr indiquer partout (pom.xml et MANIFEST.MF) que c'est cette classe la MainClass.



    ET ça MARCHE

    Pfiou, quelle usine à gaz

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    (et nos messages se sont croisés pour le maven-jar-plugin )

    Merci encore pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Projet VBA impossible à déverrouiller via une macro
    Par dadu35 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/02/2018, 18h51
  2. Build impossible sur projet Maven
    Par zoidberg dans le forum Maven
    Réponses: 6
    Dernier message: 07/07/2014, 17h22
  3. Accès au Classpath via projet Maven
    Par oni13 dans le forum Services Web
    Réponses: 0
    Dernier message: 12/09/2012, 18h03
  4. Réponses: 6
    Dernier message: 05/04/2012, 10h10
  5. Utiliser maven-source-plugin pour un sous projet
    Par JFmil53_2 dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 12/09/2011, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo