2009-07-26 69 views
9

我正在使用基於配置文件的jsps上的資源過濾。我也在使用mvn jetty:run進行本地開發,但過濾階段不運行。使用碼頭時運行資源過濾器:運行

如何使用jetty插件執行過濾?


配置片段

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.0.2</version> 
<configuration> 
    <webResources> 
     <resource> 
      <directory>src/main/webapp</directory> 
      <includes> 
       <include>error.jsp</include> 
      </includes> 
      <filtering>true</filtering> 
      <targetPath>/</targetPath> 
     </resource> 
    </webResources> 
</configuration> 
</plugin> 

<profile> 
    <id>jci</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
     <property> 
      <name>jci</name> 
     </property> 
    </activation> 
    <properties> 
     <error.title>Some value here</error.title> 
    </properties> 
</profile> 
+0

@Robert:你有沒有發現,在平均時間任何解決這個問題?當我遇到你的時候,我傾向於發佈類似的問題... – Tim 2010-02-17 18:00:03

+0

運行`jetty:deploy-war`讓我更進一步,但仍然沒有真正的工作解決方案..任何人都有這個問題的真實答案? – Tim 2010-02-17 19:07:32

回答

6

您可能需要使用碼頭:運行爆炸的目標,而不是碼頭:運行。從the documentation

這個目標首先將您的webapp組裝成一個爆炸的戰爭文件,然後部署到Jetty。

這可以確保在啓動服務器之前執行適當的戰爭生命週期階段。

您是否確定jci配置文件正在被激活?如果爲構建指定了另一個配置文件,<activeByDefault>屬性將不會啓用配置文件,有關詳細信息,請參閱this bug

從約翰·凱西​​的迴應:

上面的例子是事先設計好的。 < activeByDefault/>元素用於指定如果在構建中沒有其他配置文件處於活動狀態,則此配置文件將被激活。因此,任何配置文件的特定激活都會導致該配置文件被禁用。

1

過濾的文件通常會在構建目標目錄中結束。如果你運行'mvn jetty:run',它會默認使用未經過濾的src/main/webapp目錄。你所要做的就是將構建目標添加爲額外的資源目錄。完成後,jetty將創建一個覆蓋圖,並將使用過濾的文件。

   <plugin> 
        <groupId>org.mortbay.jetty</groupId> 
        <artifactId>maven-jetty-plugin</artifactId> 
        <version>6.1.26</version> 
        <configuration> 
         <webAppConfig> 
          <contextPath>/${project.build.finalName}</contextPath> 
          <baseResource implementation="org.mortbay.resource.ResourceCollection"> 
           <resourcesAsCSV>src/main/webapp,${project.build.directory}/${project.build.finalName}</resourcesAsCSV> 
          </baseResource> 
         </webAppConfig> 
         <scanIntervalSeconds>2</scanIntervalSeconds> 
        </configuration> 
       </plugin> 
0

感謝@Randy我也設法讓這個工作。下面是一個使用org.eclipse.jetty而不是舊的mortbay顯示資源過濾和jetty重新定義baseResource的最新示例。 這裏我們過濾兩個jsp頁面login.jsp和index.jsp,並根據下面的屬性部分將jsp中的變量「$ {login.resources}」設置爲「login.res.jsp」。 注意我們過濾並將它們寫入「jetty.docroot」,然後我們將jetty.docroot覆蓋在src/main/webapps上,以便我們的過濾jsps可以被jetty使用。覆蓋層從@Randy更新爲使用較新的「org.eclipse.jetty.util.resource.ResourceCollection」實現。

<profiles> 
<profile> 
    <id>jetty</id> 

    <properties> 
     <jetty.docroot>${project.build.directory}/jetty</jetty.docroot> 
     <login.resources>login.res.jsp</login.resources> 
    </properties> 

    <build> 

     <plugins> 

      <plugin> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>3.0.2</version> 
       <executions> 
        <execution> 
         <id>jetty-docroot</id> 
         <!-- test-compile precedes jetty:run --> 
         <phase>test-compile</phase> 

         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${jetty.docroot}</outputDirectory> 
          <resources> 
           <resource> 
            <directory>${basedir}/src/main/webapp</directory> 
            <filtering>true</filtering> 
            <includes> 
             <include>**/login.jsp</include> 
             <include>**/index.jsp</include> 
            </includes> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 

       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.4.0.v20161208</version> 
       <configuration> 

        <scanIntervalSeconds>2</scanIntervalSeconds> 

        <webApp> 
         <contextPath>/intamerge</contextPath> 
         <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection"> 

          <resourcesAsCSV>${jetty.docroot},${basedir}/src/main/webapp</resourcesAsCSV> 
          </baseResource> 
         <baseAppFirst>false</baseAppFirst> 
        </webApp> 


       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile>