当前位置: 首页 > 知识库问答 >
问题:

默认情况下,如何配置Maven WAR插件以执行“就地”目标?

田宇
2023-03-14

我正在使用Maven 3.2.3和Maven war 2.6插件。我希望默认执行Maven WAR插件的“inlace”目标(无需在命令行上明确指定“war: inlace”)。所以我创建了一个配置文件来包含以下内容

<profile>
    <id>dev</id>
    <activation>
            <property>
                    <name>!flag</name>
            </property>
    </activation>
    <build>
            <plugins>
                    <plugin>
                        <artifactId>maven-clean-plugin</artifactId>
                        <version>2.4.1</version>
                        <configuration>
                            <filesets>
                                <fileset>
                                    <directory>${project.basedir}/src/main/webapp/WEB-INF/classes</directory>
                                </fileset>
                                <fileset>
                                    <directory>${project.basedir}/src/main/webapp/WEB-INF/lib</directory>
                                </fileset>
                            </filesets>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.6</version>
                        <configuration>
                                <useCache>true</useCache>
                                <workDirectory>/tmp/${project.artifactId}/war/work</workDirectory>
                        </configuration>
                        <goals>
                                <goal>inplace</goal>
                        </goals>
                </plugin>
            </plugins>
    </build>
</profile>

使用“mvn帮助:活动配置文件”,我验证了在WAR项目上运行“mvn clean install”时正在使用此配置文件。然而,这场战争还没有准备就绪。例如,我得到输出

[INFO] Packaging webapp
[INFO] Assembling webapp [myproject] in [/Users/davea/Dropbox/workspace/myproject/target/myproject]
[INFO] Processing war project
[INFO] Copying webapp resources [/Users/davea/Dropbox/workspace/myproject/src/main/webapp]
[INFO] Webapp assembled in [17460 msecs]

此外,我注意到我的src/main/resources/WEB-INF文件夹中没有“classes”或“lib”资源。我需要以不同的方式配置什么,才能将我的战争构建到位?

共有2个答案

冯阳华
2023-03-14

WAR插件负责收集web应用程序的所有工件依赖项、类和资源,并将它们打包到web应用程序归档中。

<plugin>

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>maven-war-plugin</artifactId>

  <version>3.0.0</version>

</plugin>
夹谷和裕
2023-03-14

这可能被归类为《如何让Maven运行战争:爆炸而非战争:有小转折的战争》的翻版。它不需要分解,而需要放在原位:

<pluginManagement>
        <plugins>
                <plugin>
                    <!-- don't pack the war  -->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <configuration>
                        <!-- optional, depends on your setup -->
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                    <executions>
                        <execution>
                            <id>default-war</id>
                            <phase>none</phase>
                        </execution>
                        <execution>
                            <id>war-inplace</id>
                            <phase>package</phase>
                            <goals>
                                <goal>inplace</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
         ...
    </plugins>
<pluginManagement>
 类似资料:
  • 我是格雷德尔的新手。我正在尝试使用一个插件,但我想在执行过程中更改插件的默认值 我希望在执行过程中使用project.version中存在的版本值。但看起来该值是在执行任何任务之前设置的。有什么想法吗?

  • 我有点像Android新手,刚刚升级到Android Studio 1.2。当我制作一个新项目(API 16: Android 4.1(Jelly Bean))时,我会立即收到以下警告: 警告:项目编码(windows-1252)与Gradle生成文件(UTF-8)中指定的编码不匹配。这可能会导致严重的错误 更多信息 打开文件编码设置 这是在我没有做任何更改或编写任何代码的情况下完成的。我读了更多

  • 默认情况下,我们的路由器是Yaf_Router, 而默认使用的路由协议是Yaf_Route_Static,是基于HTTP路由的, 它期望一个请求是HTTP请求并且请求对象是使用Yaf_Request_Http

  • 我们目前使用Elasticsearch来存储由Filebeat发送的Spring Boot应用程序日志,并使用Kibana来可视化这一点。 我们的整个架构都是在一个docker-compose文件中进行docker化的。目前,当我们启动堆栈时,我们必须等待Elasticsearch启动,然后放置我们的摄取管道,然后重新启动Filebeat,只有这样我们的日志才会正确显示在Kibana中。 我对此很

  • 问题内容: 我有一些单选按钮,我希望其中的一个按钮在页面加载时默认设置为选中状态。我怎样才能做到这一点? 问题答案: XHTML解决方案: 请注意,属性的实际值并不重要。这只是分配的约定。最重要的是,字符串喜欢或没有任何特殊含义。 如果您不希望符合XHTML,则可以将代码简化为:

  • 我做了一些调查,得到了奇怪的结果。我的班级: java: 所有的包层都是简单的,以供测试。例如: 组织导入之前的Eclipse: 组织导入后的Eclipse: 组织导入前的NetBeans: