一開始的想法是以為在 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>
沒有留言:
張貼留言