2016-04-14 88 views
0

我需要配置從maven貨物插件運行的jetty以將其指向靜態內容,Ive瀏覽了碼頭文檔並且無法看到如何將配置應用於碼頭作爲貨物的一部分運行。我要配置的Web應用程序部分,將資源基地作爲我建的這個版本的模塊角應用:爲靜態內容配置maven貨物插件碼頭容器

<execution> 
        <id>start jetty - angular webapp</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
        <goal>start</goal> 
        </goals> 
        <configuration>       
         <container> 
          <containerId>jetty7x</containerId> 
          <type>embedded</type> 
         </container> 
         <webApp> 
          <resourceBases> 
           <contextPath>/</contextPath> 
           <resourceBase>../calculator-web/dist</resourceBase> 
          </resourceBases> 
         </webApp> 
         <configuration> 
          <properties>      
           <cargo.servlet.port>11000</cargo.servlet.port>           
          </properties>        
         </configuration> 
        </configuration> 
       </execution> 

碼頭開始,但它似乎忽略了這個配置,我只是得到我的索引404。 html文件。

請問有人能指點我正確的方向嗎?

回答

0

雖然貨物似乎並不直接支持Jetty的重裝自動熱部署功能,至少你可以爲你的「未完成」靜態內容,並立即拿起變化,例如在開發過程中運行嵌入式容器。

我目前的解決辦法是重新配置Jetty's DefaultServlet指着resourceBase到項目的「活」的源代碼目錄(如${basedir}/src/main/webapp),而不是部署的default (build) <location/>(例如,${project.build.directory}/${project.build.finalName}),和(只是要確定)disabling useFileMappedBuffer以避免文件鎖定Windows系統:

  1. 複製Jetty的webdefault.xml到,例如(運行貨物集裝箱作爲獨立時,例如從target/cargo/configurations/jetty.../etc/),src/main/jetty/my-webdefault.xml
  2. 修改其DefaultServlet初始化參數:

    <web-app ...> <!-- src/main/jetty/my-webdefault.xml --> 
        : 
        <servlet> 
        <servlet-name>default</servlet-name> 
        <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
        : 
        <init-param> <!-- relative to pom.xml, or wherever cargo runs --> 
         <param-name>resourceBase</param-name> 
         <param-value>./src/main/webapp</param-value> 
        </init-param> 
        <init-param> <!-- to avoid file locking in Windows, use: false --> 
         <param-name>useFileMappedBuffer</param-name> 
         <param-value>false</param-value> 
        </init-param> 
        </servlet> 
    </web-app> 
    
  3. cargo-maven2-plugincopy the new config filemy-webdefault.xml到(碼頭)容器的etc/目錄:

    <project ...> <!-- pom.xml --> 
        : 
        <build> 
        : 
        <plugins> 
         : 
         <plugin> 
         <groupId>org.codehaus.cargo</groupId> 
         <artifactId>cargo-maven2-plugin</artifactId> 
         <version>...</version> 
         <configuration> 
          <container>...</container> 
          <configuration> 
          <configfiles> 
           <configfile> 
           <file>${basedir}/src/main/jetty/my-webdefault.xml</file> 
           <tofile>etc/webdefault.xml</tofile> 
           </configfile> 
          </configfiles> 
          <properties>...</properties> 
          </configuration> 
          <deployables>...</deployables> 
         </configuration> 
         </plugin> 
        </plugins> 
        </build> 
    </project> 
    
  4. 運行與mvn clean verify cargo:run

PS。我用scratch.xml在單獨的上下文中觸發簡單的static content ResourceHandler(例如/static)的嘗試沒有成功。