9

我在 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>  
4

3 回答 3

6

您可能想要使用 jetty:run-exploded 目标而不是 jetty:run。从文档中

这个目标首先将你的 webapp 组装成一个分解的 war 文件,然后将它部署到 Jetty。

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

您还确定 jci 配置文件正在被激活吗?如果为构建指定了另一个配置文件,则 <activeByDefault> 属性将不会启用配置文件,请参阅此错误了解详细信息。

来自约翰凯西的回应:

上面的示例按设计工作。<activeByDefault/> 元素旨在指定如果构建中没有其他配置文件处于活动状态,则将激活此配置文件。因此,任何配置文件的特定激活都会导致该配置文件被停用。

于 2009-07-27T00:23:28.140 回答
1

过滤后的文件通常最终位于构建目标目录中。如果你运行 'mvn jetty:run',它默认使用你未过滤的 src/main/webapp 目录。您所要做的就是将构建目标添加为附加资源目录。这样做,码头将创建一个覆盖,也将使用过滤的文件。

                <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>
于 2013-12-17T09:29:00.517 回答
0

感谢@Randy,我也设法让它工作了。下面是一个最新的例子,展示了资源过滤和使用 org.eclipse.jetty 而不是旧的 mortbay 的码头变基 baseResource。在这里,我们过滤两个 jsp 页面 login.jsp 和 index.jsp,并根据下面的属性部分将 jsp 中的变量“${login.resources}”设置为“login.res.jsp”。请注意,我们过滤并将这些写入“jetty.docroot”,然后我们将 jetty.docroot 覆盖在 src/main/webapps 上,以便我们过滤的 jsps 被 jetty 使用。覆盖从@Randy 更新为使用更新的“org.eclipse.jetty.util.resource.ResourceCollection”实现。

<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>

于 2017-02-14T10:59:05.263 回答