使用码头当运行资源过滤器:运行(Running resource filters when usin

2019-07-30 20:10发布

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

我怎样才能进行使用码头插件过滤?


配置片段

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

Answer 1:

您可能需要使用码头:运行爆炸的目标,而不是码头:运行。 从文档 :

这个目标首先装配你的web应用到爆炸war文件,然后将其部署到码头。

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

同时你肯定JCI的轮廓正被激活? 如果构建指定另一个配置文件,在<activeByDefault>属性不会启用的配置,看到这个错误的详细信息。

从约翰·凯西​​的回应:

上面的例子是事先设计好的。 在<activeByDefault />元素是指指定,如果没有其他的配置文件是在生成活性此配置文件将被激活。 因此,任何个人资料的具体激活将导致此一个被停用。



Answer 2:

过滤后的文件通常在构建目标目录中结束。 如果你运行“命令mvn码头:运行”它每默认你的未经过滤的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>


Answer 3:

由于@Randy我设法得到这个工作了。 下面有一个到表示两个资源滤波和码头使用org.eclipse.jetty而不是早期mortbay衍合baseResource日期的例子。 在这里,我们正在筛选两个JSP页面的login.jsp和index.jsp和设置变量“$ {} login.resources”在JSP为“login.res.jsp”按下面的属性部分。 请注意,我们筛选并将它们写入“jetty.docroot”,那么,我们在覆盖的src /主/ web应用jetty.docroot所以我们的过滤JSP的习惯的码头。 叠加从@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>



文章来源: Running resource filters when using jetty:run
标签: maven-2 Jetty