Idée Intellij artéfact 'XXXX: la guerre a éclaté' a une extension invalide
chaque fois que je fais même le plus petit changement à mon POM Intellij enlève le .extension de guerre pour mon a explosé artefact dans le cadre du répertoire de sortie de Structure de projet. Cela provoque une erreur dans la configuration Run/Debug D'Intellij:
artefact' XXXX: la guerre a éclaté ' a une extension invalide.
pour résoudre le problème, je dois modifier manuellement le répertoire de sortie de la Structure du projet. paramètre. Chaque fois que je fais même le plus petit changement au POM, je dois revenir au réglage du répertoire de sortie et l'ajouter manuellement ".de la guerre" à la fin de la Sortie répertoire de configuration. Cela devient très vieux et frustrant.
p.ex. je dois changer ceci:
E:workareaenterpapplicationtargetapplication
à ceci:
E:workareaenterpapplicationtargetapplication.de la guerre
si J'ai réglé manuellement la configuration du plugin maven WAR outputDirectory comme suit, cela n'aide pas du tout:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<!-- Output directory of artifact:war exploded keeps losing the .war extension -->
<outputDirectory>${project.build.directory}.war</outputDirectory>
</configuration>
</plugin>
comment résoudre ce problème?
EDIT:
Voici la configuration complète de la construction:
<build>
<!-- Maven will append the version to the finalName (which is the name
given to the generated war, and hence the context root) -->
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- Compiler plugin enforces Java 1.6 compatibility and activates annotation
processors -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<!-- Output directory of artifact:war exploded keeps losing the .war extension -->
<outputDirectory>${project.build.directory}/${project.artifactId}.war</outputDirectory>
<!-- Java EE 7 doesn't require web.xml, Maven needs to catch up! -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- The WildFly plugin deploys your war to a local WildFly container -->
<!-- To use, run: mvn package wildfly:deploy -->
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${version.wildfly.maven.plugin}</version>
</plugin>
</plugins>
</build>
DEUXIÈME ÉDITION:
j'ai découvert qu'une solution est d'ajouter ".la guerre" ${projet.artifactId} dans le configuration de construction, par exemple:
<finalName>${project.artifactId}.war</finalName>
et supprimer outputDirectory de la configuration du plugin. Ainsi, la configuration de construction devrait ressembler à ceci:
<build>
<!--
Maven will make finalName the name of the generated war.
NOTE: Output directory of artifact:war exploded keeps losing the .war extension
http://youtrack.jetbrains.com/issue/IDEA-86484
http://youtrack.jetbrains.com/issue/IDEA-95162
The solution is to append ".war" to ${project.artifactId}, below:
-->
<finalName>${project.artifactId}.war</finalName>
<plugins>
<!-- Compiler plugin enforces Java 1.6 compatibility and activates annotation
processors -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<!-- Java EE 7 doesn't require web.xml, Maven needs to catch up! -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- The WildFly plugin deploys your war to a local WildFly container -->
<!-- To use, run: mvn package wildfly:deploy -->
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${version.wildfly.maven.plugin}</version>
</plugin>
</plugins>
</build>
avertissement: si vous utilisez cette solution de contournement, sachez que lorsque vous déployez un artefact de guerre non explosé, le nom du fichier sera appelé XXXX.guerre.guerre. Ça marche -- j'ai déployé l'artefact comme dossier de guerre à Intellij -- mais c'est moche.
INFO [org.jboss.as.serveur.déploiement] (MSC service thread 1-7) JBAS015876: début du déploiement de " XXXX.guerre.war " (runtime-name: "XXXX.guerre.de guerre)"
si quelqu'un peut me dire comment configurer le projet Intellij pour travailler avec Maven pour sélectionner une ou les autres valeurs finalName selon que je déploie un fichier de guerre contre un artefact explosé alors cette question sera suffisamment répondu.
<!-- Exploded artifact -->
<finalName>${project.artifactId}.war</finalName>
<!-- WAR file (unexploded) artifact -->
<finalName>${project.artifactId}</finalName>
4 réponses
il y a un moyen de corriger cela à IntelliJ, sans changer votre pom.fichier(s) xml, en ajoutant un artefact avec une référence à la guerre éclatée (ou dans mon cas, l'oreille éclatée) et il ne sera pas piétiné chaque fois IntelliJ ré-importe les pom maven(s). Voici comment:
-
Stop/annuler le déploiement de votre artefact de déploiement
-
éditez votre config run, et dans L'onglet de déploiement, supprimez le courant artefact de guerre et d'oreille
-
ouvrez les paramètres des artefacts du projet et ajoutez un nouvel artefact
-
utilisez le bouton plus pour ajouter une nouvelle guerre ou (dans mon cas) l'oreille a explosé artefact
-
lui donner un nom, puis éditer le répertoire de sortie pour ajouter l'extension appropriée (.guerre ou .oreille)
-
dans la section output Layout où vous voyez
<output root>
, utilisez le bouton plus pour ajouter un artefact -
sélectionnez l'objet explosé désiré
-
Éditez à nouveau votre config run, et dans L'onglet déploiement, ajoutez le nouvel artefact explosé
merci à Nikolay Chashnikov de décrire cela dans son commentaire sur le rapport de bug
en fait, vous devriez laisser l'attribut finalName
seul, sinon vous obtiendrez les problèmes que vous décrivez. Vous devriez plutôt changer la configuration du plugin Maven war pour utiliser le webappDirectory
comme ceci:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${project.build.directory}/${project.artifactId}.${project.packaging}</webappDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
si nous parlons de guerre à l'intérieur de L'oreille, il y a une autre façon de résoudre votre problème en utilisant la configuration correcte à l'intérieur de maven-ear-plugin. War pom.xml devrait être laissé tel quel, sans aucun changement, mais EAR pom.xml devrait contenir quelque chose comme ceci. (s'il vous plaît, prêtez votre attention à
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<generateApplicationXml>false</generateApplicationXml>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<modules>
<webModule>
<groupId>com.test.app</groupId>
<artifactId>test-app-war</artifactId>
<unpack>${unpack.wars}</unpack>
</webModule>
</modules>
</configuration>
</plugin>
et ensuite vous pouvez ajouter des profils par défaut et debug pour assemblage d'artefact correct.
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<unpack.wars>false</unpack.wars>
</properties>
</profile>
<profile>
<id>debug</id>
<activation>
<property>
<name>debug</name>
</property>
</activation>
<properties>
<unpack.wars>true</unpack.wars>
</properties>
</profile>
</profiles>
utiliser debug profil à l'intérieur de IntelliJ IDEA pour l'expansion des guerres et des par défaut profil pour la construction d'artefacts en ligne de commande ou CI (profil par défaut serait d'être actif si aucun profil n'a été fournie, donc votre build fonctionne comme précédemment).
avec cette solution HotSwap et ressources les mises à jour fonctionnent comme prévu.
Espérons que cette aide.
je pense que c'est la même chose que cette question: artéfact IntelliJ A extension invalide
ajouter A.extension de guerre au répertoire de sortie comme indiqué dans ma réponse: https://stackoverflow.com/a/25569266/968988