每次我对POM进行哪怕是最微小的更改,Intellij都会删除。项目结构输出目录设置中我的分解工件的war扩展。这会导致Intellij的运行/调试配置出错:
工件“XXXX:战争爆发”的扩展名无效。
为了解决这个问题,我必须手动覆盖项目结构输出目录设置。每次我对POM进行哪怕是最微小的更改,我都必须返回到输出目录设置,并手动将“.war”附加到输出目录设置的末尾。这已经变得非常陈旧和令人沮丧了。
e、 g.我必须改变这一点:
E:\workarea\entrep\application\target\application
为此:
E:\workarea\entrep\application\target\application。战争
如果我按如下方式手动设置Maven WAR插件outputDirectory配置,这一点都没有帮助:
<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>
如何解决这个问题?
编辑:
以下是完整的构建配置:
<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>
第二次编辑:
我发现一种解决方案是将“.war”附加到构建配置中的${project.artifactId},例如:
<finalName>${project.artifactId}.war</finalName>
并从插件配置中删除outputDirectory。因此,构建配置应该如下所示:
<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>
免责声明:如果您使用此解决方案,请注意,当您部署未爆炸的战争工件时,文件名将命名为XXXX。战争战争它可以工作——我在Intellij中将这个工件作为战争文件部署——但它很难看。
信息[org.jboss.as.server.deployment](MSC服务线程1-7)JBAS015876:开始部署“XXXX.war.war”(运行时名称:“XXXX.war.war)”
如果有人能告诉我如何配置Intellij项目以与Maven合作,根据我是部署WAR文件还是分解工件来选择一个或另一个finalName值,那么这个问题将得到充分的回答。
<!-- Exploded artifact -->
<finalName>${project.artifactId}.war</finalName>
<!-- WAR file (unexploded) artifact -->
<finalName>${project.artifactId}</finalName>
如果我们讨论的是EAR内部的战争,那么有另一种方法可以通过使用maven EAR插件内部的正确配置来解决您的问题。战争pom。xml应该保持原样,不做任何更改,但是EAR pom。xml应该包含这样的内容。(请注意
<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>
然后,您可以添加配置文件默认和调试,以进行适当的工件组装。
<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>
使用IntelliJ IDEA中的调试配置文件扩展WAR,并使用默认配置文件在命令行或CI中构建工件(如果没有提供配置文件,则默认配置文件将处于活动状态,因此您的构建将像以前一样工作)。
使用此解决方案,热插拔和资源更新工作正常。
希望这能有所帮助。
实际上,你应该把finalName
属性放在一边,否则你会遇到你描述的问题。相反,您应该更改maven war插件的配置,以使用webappDirectory
,如下所示:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${project.build.directory}/${project.artifactId}.${project.packaging}</webappDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
有一种方法可以在IntelliJ中解决这个问题,而无需更改pom。xml文件,通过添加一个引用分解的war(或者在我的例子中,分解的ear)的工件,它不会每次IntelliJ重新导入maven pom时都被踩到。以下是方法:
>
停止/取消部署您当前的工件部署
编辑您的运行配置,并在部署选项卡中,删除当前已爆炸的战争/耳朵工件
感谢尼古拉·查什尼科夫(Nikolay Chashnikov)在对bug报告的评论中描述了这一点
我一直在努力研究如何使用maven overlay插件将项目排除在爆炸战争之外。 我有以下内容: xml和applicationcontext.xml可以很好地排除,但它们位于:${basedir}/src/main/webapp/web-inf/下 无论我尝试什么,这些文件是静止的,覆盖,尽管排除。
我们在IntelliJ(Ultimate 14.1.14)中有一个java web项目,我们希望从爆炸战争中排除某个文件夹。
我跟随以下帖子,但这些都没有帮助我。邮政一、邮政二、邮政03、邮政04 我花了两天时间寻找答案,请帮帮我。
无法创建目录[/tmp/tomcat.9153500015669016883.8080/webapps/blog] 这是tomcat工作目录的布局: 中的断点表示它希望在webapps/中创建目录。此不存在的webapps文件夹取自(来自)。
我尝试使用Spring Boot 2.0.2从战争转移到罐子,并且在使用故障安全进行maven测试时遇到了问题。 我看到两种错误: > < li> < code > Java . lang . noclassdeffounderror ,其中列出了我的一个bean类 当我在 IntelliJ 中运行这些测试时,一切正常,但它们在 maven 中失败。与此同时,当我回到建立战争而不是罐子时,一切都有
Electron supports Chrome DevTools extensions, which can be used to extend the ability of Chrome's developer tools for debugging popular web frameworks. 使用工具加载 DevTools 扩展 加载 DevTools 扩展的最简单方法是使用第三方工具,