一開始的想法是以為在 resources 區段中直接指明要將某一目錄掛到部署包裝檔中,不過實作後發現檔案複製的方式與期望不符,因此不可行(也可能只是不會設定)。
後來,從前述 radeox 的 pom.xml 中發現其實 Maven2 可以整合 ant 的任務 (task) ,只要透過 maven-antrun-plugin 這個 plugin 即可。所以若想將整個 src/ 目錄放進部署包裝檔的話,只要在 build 區塊下使用 maven-antrun-plugin 並指定相關任務 (tasks) 內容後即可包裹出含有 src/ 目錄的部署包裝檔。
<build>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy-source</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<echo>Copying src/ to target jar. </echo>
<copy todir="${project.build.outputDirectory}/src">
<fileset dir="src/"/>
</copy>
<copy todir="${project.build.outputDirectory}"
file="pom.xml"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
現在,最頭大的是那些 expression 變數要在那邊查啊?
※ 2007-02-07 補充:先前可能真的設定錯誤,以下的設定可以讓 maven2 自動完成檔案複製的動作而無需 antrun 的介入。
<resources>
<resource>
<directory>${basedir}</directory>
<includes>
<include>src/**</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<includes>
<include>pom.xml</include>
</includes>
</resource>
</resources>
※2010-11-18 補充:最後實作的方式是在 maven-war-plugin 中操作,如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<docencoding>UTF-8</docencoding>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/main/webapp</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<includes>
<include>src/**</include>
</includes>
</resource>
<resource>
<directory>${basedir}</directory>
<includes>
<include>pom.xml</include>
<include>initial.sh</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
沒有留言:
張貼留言