Cấu hình tài nguyên trong Maven

Cấu hình tài nguyên trong Maven

Cấu trúc thư mục

Khi xây dựng dự án Maven, nếu không có cấu hình đặc biệt, Maven sẽ sử dụng cấu trúc thư mục chuẩn để tìm kiếm và xử lý các loại tệp khác nhau.

src/main/java và src/test/java

Tất cả tệp *.java trong hai thư mục này sẽ lần lượt được biên dịch ở các giai đoạn compile và test-compile, kết quả biên dịch được lưu vào target/classes và target/test-classes. Các tệp khác ngoài tệp Java trong hai thư mục này sẽ bị bỏ qua.

src/main/resources và src/test/resources

Các tệp trong hai thư mục này sẽ được sao chép vào target/classes và target/test-classes tương ứng.

target/classes

Plugin đóng gói mặc định sẽ đưa toàn bộ nội dung trong thư mục này vào trong tệp jar hoặc war.

Cấu trúc thư mục chuẩn của dự án Maven

  • src
  • main
  • java Tệp nguồn mã
  • resources Tệp tài nguyên
  • filters Tệp lọc tài nguyên
  • config Tệp cấu hình
  • scripts Tệp kịch bản
  • webapp Tệp ứng dụng web
  • test
  • java Tệp nguồn kiểm thử
  • resources Tài nguyên kiểm thử
  • filters Tài nguyên lọc kiểm thử
  • it Kiểm thử tích hợp
  • assembly Mô tả assembly
  • site Tài liệu site
  • target
  • generated-sources
  • classes
  • generated-test-sources
  • test-classes
  • xxx.jar
  • pom.xml
  • LICENSE.txt
  • NOTICE.txt
  • README.txt

Cấu hình tài nguyên

Tài nguyên là các tệp được sử dụng trong mã Java. Khi thực thi, mã sẽ tìm kiếm các tệp này tại vị trí đã chỉ định. Mặc dù Maven có cách xử lý mặc định, nhưng đôi khi cần tùy chỉnh.

Trong một số trường hợp, các tệp cấu hình thường được đặt cùng thư mục với tệp .java (ví dụ: tệp ánh xạ của MyBatis hoặc Hibernate). Hoặc muốn sao chép tài nguyên từ thư mục khác vào target/classes cũng cần chỉnh sửa trong tệp pom.xml.

Có hai phương pháp chính:

  • Thêm phần cấu hình <resources> dưới phần <build>.
  • Sử dụng plugin như maven-resources-plugin trong phần <plugins> của <build>.

Cấu hình nút resources

<build>
    .......
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
    ......
</build>

Cấu hình plugin xử lý tài nguyên

<plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-xmls</id>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/src/main/java</directory>
                                <includes>
                                    <include>**/*.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
</plugin>

Một plugin khác cũng có thể thực hiện chức năng tương tự:

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <id>add-resource</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>add-resource</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>src/main/java</directory>
                                <includes>
                                    <include>**/*.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
 </plugin> 

Cấu hình liên quan đến đóng gói

Khi đóng gói, các tệp tài nguyên trong target/classes sẽ được bao gồm cùng với các tệp class trong jar hoặc war. Đôi khi cần loại trừ một số tệp khỏi jar, lúc này cần cấu hình plugin maven-jar-plugin.

       <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <excludes>
                        <exclude>*.properties</exclude>
                    </excludes>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>xxxxxx.ConsoleLauncher</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

Thẻ: Maven maven-resources-plugin build-helper-maven-plugin maven-jar-plugin

Đăng vào ngày 5 tháng 6 lúc 18:21