2011-08-23 33 views
5

Chúng tôi đang sử dụng Maven 3 và tôi đang đối mặt với một dự án có tệp JSP và cũng sử dụng các tệp JSP "chung" được lưu trữ trong một dự án khác. Tính năng này hoạt động tốt khi sử dụng maven-war-pluginwebResources. Tất cả các tệp JSP đều tìm đường vào tệp WAR.Maven: JspC nên sử dụng các tệp JSP bên ngoài

Ý tưởng mới là biên dịch trước tất cả các JSP. Lựa chọn hiển nhiên là sử dụng jspc-maven-plugin. Tuy nhiên, điều đó không bao gồm các JSP bên ngoài khi nó biên dịch các JSP cục bộ dự án.

Sau đây là đoạn từ 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> 

Lỗi này là

[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] 

Các -directory jspGlobal sẽ được sao chép với <directory>../name.of.external.project/src/global/webapp</directory> line ở trên.

Yếu tố nào cần bao gồm các JSP bên ngoài trong JspC?


EDIT: Nhờ prunge'sRaghuram's input Tôi nhìn sâu hơn vào các nguồn và JavaDocs. Tôi nhận thấy rằng số sources được đề cập yêu cầu một số FileSet KHÔNG cho phép danh sách các thư mục. Và kể từ sources cũng không phải là một danh sách, tôi thấy không có cơ hội như thế nào tôi có thể chỉ định nhiều hơn một thư mục nguồn JSP. Tôi thậm chí đã cố gắng để sao chép các <plugin> -element, nhưng điều đó đã không giúp đỡ. Tình trạng hiện tại của tôi là:

<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> 

Bây giờ các JSP bên ngoài được biên dịch thành đường dẫn đích của dự án hiện tại. Bây giờ tôi cần một cách để biên dịch các JSP của dự án hiện tại. Làm thế nào để tôi làm điều này?

BTW, nếu tôi chuyển đổi <sources> thành dòng cho dự án hiện tại, tôi sẽ gặp lỗi tương tự như đã đề cập trước đó.

Trả lời

1

Có lẽ bạn có thể thử phiên bản mới nhất của jspc-maven-plugin, tức là 2.0-alpha-3. Lưu ý rằng usage hơi khác so với phiên bản cũ hơn.

+0

Ok, tôi đã thử điều đó. Nếu bạn có nghĩa là việc thêm sự phụ thuộc vào 'jspc-compiler-tomcat6' là tất cả những gì cần thiết, nó gây ra cùng một đầu ra. – sjngm

+0

@sjngm Tại sao nên thêm phụ thuộc? Bạn đã thử thêm nó làm plugin chưa? – Dharmaputhiran

+0

@Dharmaputhiran Xin lỗi, tôi không thể nói. Chuyện này đã quá lâu rồi. – sjngm

1

Nhìn vào số source code của CompilationMojoSupport, tôi thấy thuộc tính sources thuộc loại FileSet. Bạn có thể cấu hình điều này trong cấu hình của plugin để thêm các thư mục nguồn bổ sung. Nó trông giống như mặc định nó sử dụng ${project.basedir}/src/main/webapp bất kể cấu hình của plugin WAR.

+1

Whow, cảm ơn. Tôi đã cập nhật câu hỏi của mình. – sjngm

Các vấn đề liên quan