新的TML文件不能在eclipse中自动编译?

时间:2012-08-07 16:40:28

标签: eclipse tapestry

我正在通过Tapestry 5教程工作,我注意到对TML文件(或者新的TML文件)的更改不会自动从eclipse内部编译。我只能通过访问命令行和“mvn package”来获取新的TML文件或对任何TML文件的更改。这不可能是正确的。

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

好像* tml文件不符合自动复制到目标目录的条件,如编译的* java文件或*属性文件。

如何为更多交互式调试配置此项目,我该怎么办?

2 个答案:

答案 0 :(得分: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();
        }
    }
}

答案 1 :(得分:0)

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

<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集成)按预期运行。