2

当我通过命令行使用 jetty7 时,请$ java -jar start.jar OPTIONS=default,rewrite etc/jetty-rewrite.xml使用rewriteorg.eclipse.jetty.rewrite.handler.RewriteHandler)。
但是jetty-maven-plugin和eclipse和m2eclipse不能使用OPTIONS=default,rewrite by jetty:run

并且ClassNotFoundException : org.eclipse.jetty.rewrite.handler.RewriteHandler尽管我添加了

  • 插件码头重写pom.xml
  • <jettyEnvXml>foo.xml</jettyEnvXml>pom.xml
  • 图书馆码头写

foo.xml是写入配置以使用重写。

我应该如何配置才能通过 jetty-maven-plugin 使用 jetty-rewrite?

4

2 回答 2

2

我也不得不解决这个问题,在花了一整天的时间后终于让它工作了。

Lanyon 的帖子让我开始了,但效果不佳。请注意,我没有部署 WAR 文件,也没有 web.xml,我只是提供了一个构建的“www”目录。

对于其他发现自己处于这种情况的人来说,这对我有用:

<profile>
<id>jetty</id>
<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.1.v20140609</version>
            <configuration>
                <stopPort>9966</stopPort>
                <stopKey>stopit</stopKey>
                <webAppSourceDirectory>${project.build.directory}/www</webAppSourceDirectory>
                <jettyConfig>${project.basedir}/jetty.xml,${project.basedir}/jetty-rewrite.xml</jettyConfig>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-rewrite</artifactId>
                    <version>9.2.1.v20140609</version>
                    <type>jar</type>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-http</artifactId>
                    <version>9.2.1.v20140609</version>
                    <type>jar</type>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-server</artifactId>
                    <version>9.2.1.v20140609</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

对我来说最大的障碍是确定 jettyConfig 需要这两个配置文件。

我通过从这里下载(完全匹配的版本)jetty 发行版获得了这些文件:http: //download.eclipse.org/jetty/提取 jar 并在“etc”目录中找到这些文件。

我只修改了 jetty-rewrite.xml - 上面提供的示例规则 Lanyon 运行良好。

于 2014-07-03T22:36:04.910 回答
2

我最近不得不解决同样的问题,让 Jetty 7 在 Maven 3 中运行并使用适当的重写规则进行初始化。只有两个组件:pom.xml、jetty.xml

这是 pom.xml 的片段:

<profile>
    <id>jetty</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>7.2.2.v20101205</version>
                <configuration>
                    <jettyConfig>${project.basedir}/config/jetty7/jetty.xml</jettyConfig>
                    <webAppConfig>
                        <contextPath>/${project.artifactId}</contextPath>
                    </webAppConfig>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-http</artifactId>
                        <version>7.2.2.v20101205</version>
                        <type>jar</type>
                        <scope>runtime</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-rewrite</artifactId>
                        <version>7.2.2.v20101205</version>
                        <type>jar</type>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</profile>

您会注意到我们已经明确设置了 Jetty 配置文件。此文件必须与您使用的 Jetty 版本匹配。我们在使用其他稳定版本时遇到了问题,因此选择了 7.2.2.v20101205,如上所示。获得 jetty.xml 后,您需要将以下代码添加到它的底部。

<Get id="oldhandler" name="handler"/>
<Set name="handler">
    <New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
        <Set name="handler">
            <Ref id="oldhandler" />
        </Set>
        <Set name="rewriteRequestURI">true</Set>
        <Set name="rewritePathInfo">false</Set>
        <Set name="originalPathAttribute">requestedPath</Set>
            <!-- Added for mainsite js tagging files -->
        <Call name="addRule">
            <Arg>
                <New class="org.eclipse.jetty.rewrite.handler.RedirectPatternRule">
                    <Set name="pattern">/redirect/*</Set>
                    <Set name="location">/redirected</Set>
                </New>
            </Arg>
        </Call>
    </New>
</Set>

Jetty 重写的语法可以很容易地在 Internet 上找到,也可以在 etc/jetty-rewrite.xml 文件中找到,该文件将打包在 Jetty 7.x tar 中。

于 2011-05-17T18:15:16.033 回答