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 :

multi-module avce project javascript javascript-maven-plugin


Sujet :

Maven Java

  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut multi-module avce project javascript javascript-maven-plugin
    Bonjour, j'ai un problème avec un projet javascript et sa dépendance sous la web app.

    Mon projet est un multi-module,plusieurs jar, le javascript et le war.
    j'utilise le javascript-maven-plugin pour le projet javascript comme decrit ici :
    avascript-maven-tools
    Le projet javascript se "compile" comme il faut , utilise bien Jasmine pour test unitaire et il y a bien a la fin un fichier JS dans le target.

    Mais voila pour le wep-app, maven ne récupère pas ce fichier JS, mais tente de le télécharger, ce qui génère bien sur une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [INFO] Building Hopeless - Web App 2012-04-11-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repository.jboss.org/nexus/content/groups/public-jboss/com/hopeless/hopeless-js/2012-04-11-SNAPSHOT/maven-metadata.xml
    Downloading: http://repository.jboss.org/nexus/content/groups/public-jboss/com/hopeless/hopeless-js/2012-04-11-SNAPSHOT/hopeless-js-2012-04-11-SNAPSHOT.js
    ...
    ..
    [ERROR] Failed to execute goal on project hopeless-webapp: Could not resolve dependencies for project com.hopeless:hopeless-webapp:war:2012-04-11-SNAPSHOT: Could not find artifact com.hopeless:hopeless-js:js:2012-04-11-SNAPSHOT in repository.jboss.org (http://repository.jboss.org/nexus/content/groups/public-jboss/) -> [Help 1]
    Je ne comprend pas pourquoi il va bien chercher les jar des mes autres modules mais pas le fichier JS.

    Voici mes pom :


    Pom parent:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <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.hopeless</groupId>
    	<artifactId>hopeless-parent</artifactId>
    	<version>2012-04-11-SNAPSHOT</version>
     
    	<name>Hopeless - Parent</name>
    	<packaging>pom</packaging>
     
    	<description>
            Ce projet est le parent des projets constituants le jeu Hopeless World. 
        </description>
     
    	<modules>
     
    		<!-- Domaine / DAO -->
    		<module>hopeless-domaine</module>
    		<!-- Sécurity -->
    		<module>hopeless-security</module>
    		<!-- Services Spring -->
    		<module>hopeless-services</module>
    		<!-- Service d'email -->
    		<module>hopeless-email</module>
    		<!-- javascript d'hopeless -->
    		<module>hopeless-js</module>
    		<!-- Web App d'hopeless -->
    		<module>hopeless-webapp</module>
    		<!-- futur module pour exposer les web services du métier -->
    		<!-- <module>hopeless-ws</module> -->
    	</modules>
    <!--  suite du pom -->
    </project>
    Pom de hopeless-js
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    <?xml version="1.0" encoding="UTF-8"?>
    <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>
     
    	<parent>
    		<groupId>com.hopeless</groupId>
    		<artifactId>hopeless-parent</artifactId>
    		<version>2012-04-11-SNAPSHOT</version>
    	</parent>
     
    	<artifactId>hopeless-js</artifactId>
    	<packaging>js</packaging>
     
    	<!-- Name / Description -->
    	<name>Hopeless - Javascript</name>
    	<description>
    		Ce projet est le javascript de Hopeless.
    	</description>
     
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.version>${project.version}</project.version>
    		<buildtime>${maven.build.timestamp}</buildtime>
    	</properties>
     
    	<pluginRepositories>
    		<pluginRepository>
    			<id>snapshots.repository.codehaus.org</id>
    			<name>Codehaus Snapshot Repository</name>
    			<url>http://snapshots.repository.codehaus.org</url>
    			<snapshots>
    				<enabled>true</enabled>
    			</snapshots>
    			<releases>
    				<enabled>false</enabled>
    			</releases>
    		</pluginRepository>
    	</pluginRepositories>
     
    	<build>
    		<resources>
    			<resource>
    				<directory>src/maven-archiver</directory>
    				<filtering>true</filtering>
    				<targetPath>${project.build.directory}/maven-archiver</targetPath>
    			</resource>
    		</resources>
    		<extensions>
    			<extension>
    				<groupId>org.codehaus.mojo</groupId>
    				<artifactId>javascript-maven-plugin</artifactId>
    				<version>2.0.0-alpha-1</version>
    			</extension>
    		</extensions>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-assembly-plugin</artifactId>
    				<executions>
    					<execution>
    						<id>my-component-assembly</id>
    						<phase>package</phase>
    						<goals>
    							<goal>single</goal>
    						</goals>
    						<configuration>
    							<appendAssemblyId>true</appendAssemblyId>
    							<descriptors>
    								<descriptor>${basedir}/src/assembler/assembly.xml</descriptor>
    							</descriptors>
    						</configuration>
    					</execution>
    				</executions>
    			</plugin>
    			<plugin>
    				<groupId>org.codehaus.mojo</groupId>
    				<artifactId>jslint-maven-plugin</artifactId>
    				<configuration>
    					<!-- on skip tous pour jslint, on utilise jasmine qui est beaucoup mieu -->
    					<skipTests>true</skipTests>
    					<excludes>
    						<exclude>*.js</exclude>
    						<exclude>**/*.js</exclude>
    					</excludes>
    				</configuration>
    			</plugin>
     
    			<plugin>
    				<groupId>com.github.searls</groupId>
    				<artifactId>jasmine-maven-plugin</artifactId>
    				<version>1.2.0.0</version>
    				<extensions>true</extensions>
    				<executions>
    					<execution>
    						<goals>
    							<goal>test</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<!-- <skipTests>${maven.test.skip}</skipTests> -->
    					<jsSrcDir>src/main/js</jsSrcDir>
    					<jsTestSrcDir>src/test/js</jsTestSrcDir>
    					<!-- <sourceIncludes> <include>src/test/resources/angular_1.0.6.min.js</include> 
    						</sourceIncludes> -->
    					<!-- <specIncludes> <specInclude>src/test/resources/angular_1.0.6.min.js</specInclude> 
    						</specIncludes> -->
    					<!-- <junitXmlReportFileName>../surefire-reports/TEST-jasmine.xml</junitXmlReportFileName> -->
    					<preloadSources>
    						<!-- Besoin de JQuery car angular utilise jqlite et ca plante avec 
    							jasmine -->
    						<preloadSource>spec/lib/jquery-1.7.1.min.js</preloadSource>
    						<preloadSource>spec/lib/angular_1.0.6.js</preloadSource>
    						<preloadSource>spec/lib/angular-mocks.js</preloadSource>
    					</preloadSources>
    				</configuration>
    			</plugin>
     
    			<plugin>
    				<groupId>net.alchim31.maven</groupId>
    				<artifactId>yuicompressor-maven-plugin</artifactId>
    				<version>1.1</version>
    				<executions>
    					<execution>
    						<id>compress-js</id>
    						<goals>
    							<goal>compress</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<nosuffix>true</nosuffix>
    					<aggregations>
    						<aggregation>
    							<!-- remove files after aggregation (default: false) <removeIncluded>true</removeIncluded> -->
    							<!-- insert new line after each concatenation (default: false) -->
    							<insertNewLine>true</insertNewLine>
    							<output>${project.build.directory}/hopeless-${project.version}.js</output>
    							<!-- <output>${project.build.directory}/${project.build.finalName}-${project.version}.js</output> -->
    							<!-- files to include, path relative to output's directory or absolute 
    								path -->
    							<!--inputDir>base directory for non absolute includes, default to 
    								parent dir of output</inputDir -->
    							<includes>
    								<!-- <include>${basedir}/src/licenses/license.js</include> -->
    								<include>**/*.js</include>
    							</includes>
    							<!-- files to exclude, path relative to output's directory <excludes> 
    								<exclude>**/*.pack.js</exclude> <exclude>**/compressed.css</exclude> </excludes> -->
    						</aggregation>
    					</aggregations>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
     
    </project>

    pom du hopeless-webapp
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?xml version="1.0" encoding="UTF-8"?>
    <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>
     
    	<parent>
    		<groupId>com.hopeless</groupId>
    		<artifactId>hopeless-parent</artifactId>
    		<version>2012-04-11-SNAPSHOT</version>
    	</parent>
     
    	<artifactId>hopeless-webapp</artifactId>
    	<packaging>war</packaging>
     
    	<!-- Name / Description -->
    	<name>Hopeless - Web App</name>
    	<description>
    		Ce projet est la Web App Hopeless.
    	</description>
     
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.version>${project.version}</project.version>
    		<buildtime>${maven.build.timestamp}</buildtime>
    	</properties>
     
    	<build>
    		<!-- Resources -->
    		<resources>
    			<resource>
    				<directory>src/main/resources</directory>
    				<filtering>true</filtering>
    			</resource>
    		</resources>
    		<!-- Test resources -->
    		<testResources>
    			<testResource>
    				<directory>src/main/resources</directory>
    				<filtering>true</filtering>
    			</testResource>
    			<testResource>
    				<directory>src/test/resources</directory>
    			</testResource>
    		</testResources>
     
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-war-plugin</artifactId>
    				<configuration>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
     
    	<dependencies>
     
    		<!-- Hopeless Domaine -->
    		<dependency>
    			<groupId>com.hopeless</groupId>
    			<artifactId>hopeless-domaine</artifactId>
    			<version>${project.version}</version>
    		</dependency>
     
    		<!-- Hopeless Security -->
    		<dependency>
    			<groupId>com.hopeless</groupId>
    			<artifactId>hopeless-security</artifactId>
    			<version>${project.version}</version>
    		</dependency>
     
    		<!-- Hopeless Services -->
    		<dependency>
    			<groupId>com.hopeless</groupId>
    			<artifactId>hopeless-services</artifactId>
    			<version>${project.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>com.hopeless</groupId>
    			<artifactId>hopeless-email</artifactId>
    			<version>${project.version}</version>
    		</dependency>
     
    		<dependency>
    			<groupId>com.hopeless</groupId>
    			<artifactId>hopeless-js</artifactId>
    			<version>${project.version}</version>
    			<type>js</type>
    		</dependency>
    <!-- autre dependance -->
     
    	</dependencies>
    </project>


    Je sais qu'il est possible de crée un war pour le JS et d'utiliser le overlay du plugin maven-war-plugin, mais vu qu'il essaye de d/l le JS, je me dit qu'il doit juste manquer un truc dans un pom pour qu'il aille chercher le JS dans le module concerné.

    Merci d'avance de toute l'aide que vous pouvez me fournir.

  2. #2
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    Tu utilises un packaging js pour ton projet JS.

    Si tu veux packager ton js dans un War, alors il te faut un packaging war et avoir tes js dans une sous arborescence du répertoire src/main/webapp.
    Cependant utiliser l'overlay du plugin war c'est un peu overkill.

    A priori ton plugin javascript-maven-plugin a son propre packaging js, je ne connais pas ce plugin mais je suppose qu'il installe ton fichier sur un chemin bien particulier de ton repo local.
    Vérifies d'abord au moment du mvn install sur ton projet js où est installé ton pack js (ca doit apparaître dans les logs) ensuite tu pourras correctement positionner la dépendance dans ton projet war.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut
    Merci, je n'avais pas pensé au mvn clean install, et ça m'a fait un poil progresser.

    Bon deja, Yui plugin sert a rien, car javascript-maven-plugin intègre le plugin webminifier-maven-plugin qui lui utilise YIU .
    Le packaging pour avoir un zip sert a pas grand chose au final donc je l'ai viré ça m’enlève une source potentiel de problème.

    donc le nouveau pom ressemble à çà :
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?xml version="1.0" encoding="UTF-8"?>
    <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>
     
     
    	<parent>
    		<groupId>com.hopeless</groupId>
    		<artifactId>hopeless-parent</artifactId>
    		<version>2012-04-11-SNAPSHOT</version>
    	</parent>
     
    	<artifactId>hopeless-js</artifactId>
    	<packaging>js</packaging>
     
    	<!-- Name / Description -->
    	<name>Hopeless - Javascript</name>
    	<description>
    		Ce projet est le javascript de Hopeless.
    	</description>
     
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.version>${project.version}</project.version>
    		<buildtime>${maven.build.timestamp}</buildtime>
    	</properties>
     
    	<pluginRepositories>
    		<pluginRepository>
    			<id>snapshots.repository.codehaus.org</id>
    			<name>Codehaus Snapshot Repository</name>
    			<url>http://snapshots.repository.codehaus.org</url>
    			<snapshots>
    				<enabled>true</enabled>
    			</snapshots>
    			<releases>
    				<enabled>false</enabled>
    			</releases>
    		</pluginRepository>
    	</pluginRepositories>
     
    	<build>
    		<extensions>
    			<extension>
    				<groupId>org.codehaus.mojo</groupId>
    				<artifactId>javascript-maven-plugin</artifactId>
    				<version>2.0.0-alpha-1</version>
    			</extension>
    		</extensions>
    		<plugins>
    			<plugin>
    				<groupId>org.codehaus.mojo</groupId>
    				<artifactId>jslint-maven-plugin</artifactId>
    				<configuration>
    					<!-- on skip tous pour jslint, on utilise jasmine qui est beaucoup mieu -->
    					<skipTests>true</skipTests>
    					<excludes>
    						<exclude>*.js</exclude>
    						<exclude>**/*.js</exclude>
    					</excludes>
    				</configuration>
    			</plugin>
     
    			<plugin>
    				<groupId>com.github.searls</groupId>
    				<artifactId>jasmine-maven-plugin</artifactId>
    				<version>1.2.0.0</version>
    				<extensions>true</extensions>
    				<executions>
    					<execution>
    						<goals>
    							<goal>test</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<!-- <skipTests>${maven.test.skip}</skipTests> -->
    					<jsSrcDir>src/main/js</jsSrcDir>
    					<jsTestSrcDir>src/test/js</jsTestSrcDir>
    					<!-- <sourceIncludes> <include>src/test/resources/angular_1.0.6.min.js</include> 
    						</sourceIncludes> -->
    					<!-- <specIncludes> <specInclude>src/test/resources/angular_1.0.6.min.js</specInclude> 
    						</specIncludes> -->
    					<!-- <junitXmlReportFileName>../surefire-reports/TEST-jasmine.xml</junitXmlReportFileName> -->
    					<preloadSources>
    						<!-- Besoin de JQuery car angular utilise jqlite et ca plante avec 
    							jasmine -->
    						<preloadSource>spec/lib/jquery-1.7.1.min.js</preloadSource>
    						<preloadSource>spec/lib/angular_1.0.6.js</preloadSource>
    						<preloadSource>spec/lib/angular-mocks.js</preloadSource>
    					</preloadSources>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
     
    </project>

    La j'ai ça comme message lors du mvn clean install :
    The packaging for this project did not assign a file to the build artifact

    Si je sort totalement le projet javascript pour en faire un projet indépendant, ça marche nickel, il me met le javascript ( minimifier et non minifier ) ,le pom et les xml pour maven dans mon repo local.

    Ça avance, j'ai plus qu'a trouver pourquoi il veut pas le faire en temps que modules ( et je sent que c'est une connerie).

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/04/2013, 20h28
  2. Réponses: 3
    Dernier message: 05/06/2008, 13h27
  3. [Continuum] Project multi-modules
    Par loki82 dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 13/12/2007, 12h08
  4. [MAVEN-PLUGIN]Plugin maven-site et les multi-modules
    Par DanielW33 dans le forum Maven
    Réponses: 3
    Dernier message: 22/10/2007, 16h36
  5. [Cobertura] [Maven] Rapport en mode site ou multi-modules
    Par lbroudoux dans le forum Qualimétrie
    Réponses: 3
    Dernier message: 03/08/2007, 16h33

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