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.
Ok, ci ho provato. Se volevi dire che aggiungere la dipendenza su 'jspc-compiler-tomcat6' è tutto ciò che è necessario causa lo stesso output. – sjngm
@sjngm Perché aggiungere dipendenza? Hai provato ad aggiungerlo come plugin? – Dharmaputhiran
@Dharmaputhiran Spiacente, non posso dirlo. Questo era troppo tempo fa. – sjngm