2011-08-23 4 views
5

Stiamo usando Maven 3 e sto affrontando un progetto che ha file JSP e utilizza anche file JSP "globali" memorizzati in un progetto diverso. Funziona bene quando si utilizza maven-war-plugin e webResources. Tutti i file JSP trovano la loro strada nel file WAR.Maven: JspC dovrebbe usare file JSP esterni

La nuova idea è di precompilare tutti i JSP. La scelta più ovvia è utilizzare jspc-maven-plugin. Tuttavia, questo non include i JSP esterni quando compila i JSP locali del progetto.

Ecco il frammento della 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'errore è

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

Il jspGlobal -directory otterrebbe copiato con il <directory>../name.of.external.project/src/global/webapp</directory>-line di cui sopra.

Cosa manca per includere i JSP esterni in JspC?


EDIT: Grazie a prunge's e Raghuram's input ho guardato più in profondità fonti e JavaDocs. Ho notato che il menzionato sources richiede un FileSet che NON consente un elenco di directory. E dal momento che sources non è un elenco, non vedo alcuna possibilità di specificare più di una directory di origine JSP. Ho anche provato a copiare il -element <plugin>, ma questo non ha aiutato. La mia situazione attuale è questa:

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

Ora i JSP esterni vengono compilati nel percorso di destinazione del progetto corrente. Ora ho bisogno di un modo per compilare i JSP del progetto corrente. Come faccio a fare questo?

BTW, se si passa <sources> alla riga per il progetto corrente, si ottiene lo stesso errore menzionato in precedenza.

risposta

1

Forse potresti provare con l'ultima versione di jspc-maven-plugin, che è 2.0-alpha-3. Si noti che lo usage è leggermente diverso dalla versione precedente.

+0

Ok, ci ho provato. Se volevi dire che aggiungere la dipendenza su 'jspc-compiler-tomcat6' è tutto ciò che è necessario causa lo stesso output. – sjngm

+0

@sjngm Perché aggiungere dipendenza? Hai provato ad aggiungerlo come plugin? – Dharmaputhiran

+0

@Dharmaputhiran Spiacente, non posso dirlo. Questo era troppo tempo fa. – sjngm

1

Guardando il source code di CompilationMojoSupport, vedo una proprietà sources di tipo FileSet. Potresti essere in grado di configurarlo nella configurazione del plugin per aggiungere ulteriori directory di origine. Per impostazione predefinita, utilizza ${project.basedir}/src/main/webapp indipendentemente dalla configurazione del plugin WAR.

+1

Whow, grazie. Ho aggiornato la mia domanda. – sjngm