我們使用的是Maven 3,我面臨的項目有JSP文件,也使用存儲在不同項目中的「全局」JSP文件。這在使用maven-war-plugin和webResources
時效果很好。所有的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's和Raghuram'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>
切換到當前項目的行,我會得到與前面提到的相同的錯誤。
好吧,我試過了。如果你的意思是在'jspc-compiler-tomcat6'上添加依賴關係是必須的,它會導致相同的輸出。 – sjngm
@sjngm爲什麼添加依賴關係?你有沒有嘗試添加它作爲一個插件? – Dharmaputhiran
@Dharmaputhiran對不起,我不知道。這太早了。 – sjngm