0

私は Tapestry 5 のチュートリアルを進めていますが、TML ファイル (または新しい TML ファイル) への変更が Eclipse 内部から自動的にコンパイルされないことに気付きました。新しい TML ファイルまたは TML ファイルへの変更を取得するには、コマンド ラインと「mvn パッケージ」を実行する必要があります。それは正しくありません。

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 に答える