14

我的项目目录中有 CSS 和 JavaScript 文件src/main/webapp。我想加入将这些资源的加入和缩小版本添加到我的 WAR 文件和tomcat-maven-plugin获取它的位置。

我使用 yuicompressor-maven-plugin 创建文件并将其放入${project.build.directory}/${project.build.finalName}. 它适用于 maven 包,并且这些资源进入 WAR 文件,但不知何故tomcat-maven-plugin根本看不到这些。我应该为它使用不同的目录吗?

我的pom:

    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <version>1.1</version>
            <configuration>
                <path>/MyApp</path>
                <warDirectory>${project.build.directory}/${project.build.finalName}</warDirectory>
            </configuration>
        </plugin>
        <plugin>
            <version>2.5.1</version>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <optimize>true</optimize>
                <debug>true</debug>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/resources/META-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>META-INF</targetPath>
                        <includes>
                            <include>context.xml</include>
                        </includes>
                    </resource>
                </webResources>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.3.0</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <configuration>
                        <excludes>
                            <exclude>**/*</exclude>
                        </excludes>
                        <aggregations>
                            <aggregation>
                                <output>${project.build.directory}/${project.build.finalName}/js/commons-pack.js</output>
                                <includes>
                                    <include>${project.build.sourceDirectory}/../webapp/js1.js</include>
                                    <include>${project.build.sourceDirectory}/../webapp/js2.js</include>
                     ...

我应该怎么做才能 mvn tomcat:run提取我生成的文件?

4

3 回答 3

5

使用warSourceDirectory

<warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>

而不是这个配置属性(warDirectorytomcat-maven-plugin

<warDirectory>${project.build.directory}/${project.build.finalName}</warDirectory>

根据tomcat-maven-plugin 文档warSourceDirectory是获取网络资源的地方,其默认值为${basedir}/src/main/webapp. 这意味着如果您不设置该属性,则需要在${basedir}/src/main/webapp.

如果设置warSourceDirectory为输出文件夹,这意味着您需要在启动 Tomcat 之前生成此文件。

于 2012-09-24T19:25:31.133 回答
3

或者,您也可以使用run-war目标来代替run,例如mvn tomcat6:run-war。这将使用构建目录中的爆炸战争(因此过滤资源)。看到这个网站。还有run-war-only一个跳过包装阶段。

于 2013-03-12T10:53:44.113 回答
1

请注意,插件现在由 Apache 维护(所以升级一点 :-))请参阅http://tomcat.apache.org/maven-plugin-2.0/

即使它可以使用 install 我不确定它是否是最佳解决方案(关于 io 和构建时间)。

tomcat 运行必须能够使用来自多个目录的资源(我不确定当前的 tomcat 嵌入 api 是否可行)。

您可以在此处添加功能请求吗https://issues.apache.org/jira/browse/MTOMCAT

谢谢

于 2012-09-25T15:28:24.703 回答