使用jetty时运行资源过滤器:运行

时间:2009-07-26 20:14:04

标签: maven-2 jetty

我正在使用基于配置文件的jsps资源过滤。我也在使用mvn jetty:run进行本地开发,但过滤阶段不会运行。

如何使用jetty插件执行过滤?


配置代码段

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
    <webResources>
        <resource>
            <directory>src/main/webapp</directory>
            <includes>
                <include>error.jsp</include>
            </includes>
            <filtering>true</filtering>
            <targetPath>/</targetPath>
        </resource>
    </webResources>
</configuration>
</plugin>

<profile>
    <id>jci</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <property>
            <name>jci</name>
        </property>
    </activation>
    <properties>
        <error.title>Some value here</error.title>
    </properties>
</profile>  

3 个答案:

答案 0 :(得分:6)

你可能想要使用jetty:run-explosion目标而不是jetty:run。来自the documentation

  

此目标首先将您的webapp组装成爆炸的war文件,然后将其部署到Jetty。

这可以确保在服务器启动之前执行适当的war生命周期阶段。

您还确定jci配置文件正在激活吗?如果为构建指定了另一个配置文件,则&lt; activeByDefault&gt;属性不会启用配置文件,有关详细信息,请参阅this bug

来自John Casey的回应:

  

以上示例按设计工作。 &lt; activeByDefault /&gt; element表示如果构建中没有其他配置文件处于活动状态,则指定将激活此配置文件。因此,任何配置文件的特定激活将导致该配置文件被停用。

答案 1 :(得分:1)

过滤后的文件通常最终出现在build target-directory中。如果你运行'mvn jetty:run'它默认使用你未经过滤的src / main / webapp目录。您所要做的就是将build-target添加为附加资源目录。完成后,jetty将创建一个叠加层,并且还将使用过滤后的文件。

                <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                    <version>6.1.26</version>
                    <configuration>
                        <webAppConfig>
                            <contextPath>/${project.build.finalName}</contextPath>
                            <baseResource implementation="org.mortbay.resource.ResourceCollection">
                                <resourcesAsCSV>src/main/webapp,${project.build.directory}/${project.build.finalName}</resourcesAsCSV>
                            </baseResource>
                        </webAppConfig>
                        <scanIntervalSeconds>2</scanIntervalSeconds>
                    </configuration>
                </plugin>

答案 2 :(得分:0)

感谢@Randy我也成功了。下面是一个最新的示例,显示使用org.eclipse.jetty而不是旧的mortbay的资源过滤和jetty rebasing baseResource。 这里我们过滤两个jsp页面login.jsp和index.jsp并设置变量&#34; $ {login.resources}&#34;在jsp to&#34; login.res.jsp&#34;根据下面的属性部分。 请注意我们过滤并将这些内容写入&#34; jetty.docroot&#34;,然后我们将jetty.docroot覆盖在src / main / webapps上,以便我们过滤的jsps被jetty使用。叠加层从@Randy更新为使用更新的&#34; org.eclipse.jetty.util.resource.ResourceCollection&#34;实施

<profiles>
<profile>
    <id>jetty</id>

    <properties>
        <jetty.docroot>${project.build.directory}/jetty</jetty.docroot>
        <login.resources>login.res.jsp</login.resources>
    </properties>

    <build>

        <plugins>

            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
                <executions>
                    <execution>
                        <id>jetty-docroot</id>
                        <!-- test-compile precedes jetty:run -->
                        <phase>test-compile</phase>

                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${jetty.docroot}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/src/main/webapp</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>**/login.jsp</include>
                                        <include>**/index.jsp</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>

                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.4.0.v20161208</version>
                <configuration>

                    <scanIntervalSeconds>2</scanIntervalSeconds>

                    <webApp>
                        <contextPath>/intamerge</contextPath>
                         <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection">

                             <resourcesAsCSV>${jetty.docroot},${basedir}/src/main/webapp</resourcesAsCSV>
                            </baseResource>
                        <baseAppFirst>false</baseAppFirst>
                    </webApp>


                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>