0

我正在学习 Tapestry 5 教程,我注意到对 TML 文件(或新的 TML 文件)的更改不会从 Eclipse 内部自动编译。我只能通过进入命令行和“mvn package”来获得新的 TML 文件或对任何 TML 文件的更改。这不可能。

在 Eclipse 中,这是一个 Maven 项目,我执行了整个“mvn eclipse:eclipse -DdownloadSources=true”,所以很难相信 eclipse 项目没有正确配置。

就好像 *tml 文件不符合自动复制到目标目录的条件,就像编译的 *java 文件或 *properties 文件一样。

我必须做些什么才能配置此项目以进行更多交互式调试?

4

2 回答 2

2

就个人而言,我总是向 Jetty 添加一个测试依赖项并使用以下类启动它。因为代码是从 eclipse 的类路径运行的,所以无论 eclipse 看到什么,jetty web 应用程序也会看到。因此,资源目录永远不会有任何问题。

<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
    <version>6.1.26</version>
</dependency>
package jetty;
import org.apache.tapestry5.SymbolConstants;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.ContextHandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;

/**
 * For jetty 6
 * @see http://docs.codehaus.org/display/JETTY/Embedding+Jetty#comment-4391085
 */
public class JettyWebServer {
    public static String     context = "/";
    public static int         port     = 8069;

    private Server jettyServer;

    public void start() throws Exception {
        System.setProperty(SymbolConstants.PRODUCTION_MODE, "false");

        jettyServer = new Server();
        Connector connector = new SelectChannelConnector();
        connector.setPort(port);
        connector.setHost("127.0.0.1");
        jettyServer.addConnector(connector);

        WebAppContext context = new WebAppContext("src/web/", JettyWebServer.context);
        context.setLogUrlOnStart(true);
        context.setParentLoaderPriority(true);
        jettyServer.setStopAtShutdown(true);

        ContextHandlerCollection contexts = new ContextHandlerCollection();
        contexts.addHandler(context);
        jettyServer.setHandler(contexts);

        jettyServer.start();
    }

    public void join() throws Exception {
        jettyServer.join();
    }

    public void stop() throws Exception {
        if (jettyServer != null)
            jettyServer.stop();
    }

    public static void main(String[] args) throws Exception {
        JettyWebServer server = new JettyWebServer();
        try {
            server.start();
            server.join();
        } finally {
            server.stop();
        }
    }
}
于 2012-08-08T12:27:09.823 回答
0

我假设您的模板文件位于类文件旁边src/main/java?您需要确保 Maven 将来自该位置的文件视为除了通常/resources位置之外的资源。此配置应该有效:

<resources>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*</include>
        </includes>
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
    </resource>
</resources>

这也使 Maven Eclipse 插件(和 M2 集成)按预期运行。

于 2012-08-07T19:41:37.113 回答