2016-07-13 8 views
0

私たちはネストされたマルチモジュールプロジェクトを持っています。当社の開発者は、IntelliJ IDEAとEclipseユーザーが混在しています。Mavenで異なるJettyリソースベースIntelliJ IDEAとEclipseのネストされたマルチモジュールプロジェクト

内部モジュール内でjettyサーバーを実行している場合、使用しているIDEによってリソースベースを異なる値に設定する必要があるようです。 IntelliJのために

:Eclipse用

root.setResourceBase("myModule/src/main/webapp");

root.setResourceBase("src/main/webapp");

私たちは、例えば、それを動作させるために私たちのIDEを微調整する必要がありますする必要はありませんIntelliJの設定をEclipseのコードと連携させるために、設定を変更する必要はありません。

アイデア?

答えて

1

短い答え:IntelliJの対Eclipseの間

あなたの実行の違いは異なるPWDを持つ、または$ {}はuser.dir、またはディレクトリのセットアップ作業によって説明することができます。

良い答え

は、ファイルシステムのパスを使用しないでください。

Classloader.getResource()を経由して、その場所で知られているリソースを検索し、その後、root.setResourceBase()

例に親ディレクトリを渡す:

Server server = new Server(8080); 

    // Figure out what path to serve content from 
    ClassLoader cl = WebAppContextFromClasspath.class.getClassLoader(); 
    // We look for a file, as ClassLoader.getResource() is not 
    // designed to look for directories (we resolve the directory later) 
    URL f = cl.getResource("hello.html"); 
    if (f == null) 
    { 
     throw new RuntimeException("Unable to find resource directory"); 
    } 

    // Resolve file to directory 
    URI webRootUri = f.toURI().resolve("./").normalize(); 
    System.err.println("WebRoot is " + webRootUri); 

    WebAppContext webapp = new WebAppContext(); 
    webapp.setContextPath("/"); 
    webapp.setWar(webRootUri.toASCIIString()); 
    webapp.setParentLoaderPriority(true); 

    server.setHandler(webapp); 

    server.start(); 
    server.join(); 

あなたはembedded-jetty-cookbook例でこれを見ることができます:

他の良い答え

別のアプローチは、それがembedded-jetty-live-warServerMain.javaで動作モードを実行

参照されている方法に応じsrc/main/webapp、いくつかの異なった方法を見つけることです例。

関連する問題