2011-08-23 85 views
5

我們使用的是Maven 3,我面臨的項目有JSP文件,也使用存儲在不同項目中的「全局」JSP文件。這在使用maven-war-pluginwebResources時效果很好。所有的JSP文件都可以進入WAR文件。Maven:JspC應該使用外部JSP文件

新的想法是預編譯所有的JSP。明顯的選擇是使用jspc-maven-plugin。但是,它在編譯項目本地JSP時不包括外部JSP。

下面是來自pom.xml片斷:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jspc-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>jspc</id> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <warName>${pom.groupId}.${pom.artifactId}-0.0.1-SNAPSHOT</warName> 
     <webXml>${basedir}/target/jspweb.xml</webXml> 
     <webResources> 
     <resource> 
      <directory>../name.of.external.project/src/global/webapp</directory> 
     </resource> 
     </webResources> 
    </configuration> 
    </plugin> 

的錯誤是

[ERROR] Failed to execute goal org.codehaus.mojo:jspc-maven-plugin:1.4.6:compile (jspc) on project internal.project: JSPC Error: file:C:/workspace/name.of.internal.project/src/main/webapp/WEB-INF/views/show.jsp(2,0) File "/WEB-INF/views/../jspGlobal/jsp-declaration.jspf" not found -> [Help 1] 

jspGlobal -directory將與上述<directory>../name.of.external.project/src/global/webapp</directory>直插被複制。

在JspC中包含外部JSP缺少了什麼?


編輯:感謝prunge'sRaghuram's input我看着更深來源和Javadoc。我注意到提到的sources需要一個不允許目錄列表的FileSet。而且由於sources也不是一個列表,所以我看不到如何指定多個JSP源目錄。我甚至試圖複製<plugin> -lelement,但這沒有幫助。我目前的情況是這樣的:

<plugin> 
    <groupId>org.codehaus.mojo.jspc</groupId> 
    <artifactId>jspc-maven-plugin</artifactId> 
    <version>2.0-alpha-3</version> 
    <executions> 
     <execution> 
     <id>jspc</id> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <sources> 
     <directory>${basedir}/../name.of.external.project/src/global/webapp</directory> 
     </sources> 
<!-- the later mentioned <sources> gets picked 
     <sources> 
     <directory>${basedir}/src/main/webapp</directory> 
     </sources> 
--> 
     <!-- 1.6 doesn't work!? Something lower than 1.5 seems to be the default --> 
     <source>1.5</source> 
     <target>1.5</target> 
    </configuration> 
    <dependencies> 
     <dependency> 
     <groupId>org.codehaus.mojo.jspc</groupId> 
     <artifactId>jspc-compiler-tomcat6</artifactId> 
     <version>2.0-alpha-3</version> 
     </dependency> 
    </dependencies> 
    </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <warName>${pom.groupId}.${pom.artifactId}-0.0.1-SNAPSHOT</warName> 
     <webXml>${basedir}/target/jspweb.xml</webXml> 
     <webResources> 
     <resource> 
      <directory>../name.of.external.project/src/global/webapp</directory> 
     </resource> 
     </webResources> 
    </configuration> 
    </plugin> 

現在外部JSP被編譯到當前項目的目標路徑中。現在我需要一種方法來編譯當前項目的JSP。我該怎麼做呢?

順便說一句,如果我將<sources>切換到當前項目的行,我會得到與前面提到的相同的錯誤。

回答

1

也許你可以嘗試使用最新版本的jspc-maven-plugin,它是2.0-alpha-3。請注意0​​與早期版本有點不同。

+0

好吧,我試過了。如果你的意思是在'jspc-compiler-tomcat6'上添加依賴關係是必須的,它會導致相同的輸出。 – sjngm

+0

@sjngm爲什麼添加依賴關係?你有沒有嘗試添加它作爲一個插件? – Dharmaputhiran

+0

@Dharmaputhiran對不起,我不知道。這太早了。 – sjngm

1

看的source code,我看到一個sources類型的屬性FileSet。您可以在插件的配置中配置此項以添加其他源目錄。無論WAR插件的配置如何,默認情況下它都使用${project.basedir}/src/main/webapp

+1

謝謝。我更新了我的問題。 – sjngm

相關問題