2010-10-22 33 views
37

Tôi đang cố gắng tìm cách sao chép tệp tài nguyên sang tên mới trong thư mục đích trong bản dựng Maven. Khá nhiều mọi thứ tôi đã tìm thấy trong khi tìm kiếm gợi ý cách giải quyết liên quan đến nhiều thư mục con trong /src/main/resources và chọn trong số chúng thông qua hồ sơ. Tuy nhiên, trong trường hợp của tôi, điều này không giải quyết được vấn đề, cụ thể là tệp tôi muốn có tên "ma thuật".Đổi tên tài nguyên trong Maven

Về cơ bản những gì tôi muốn làm là có một tệp /src/main/resources/default.DS_Store được sao chép vào ${project.build.directory}/.DS_Store. Vì tệp .DS_Store có ý nghĩa đặc biệt trong Mac OSX, nên không có tệp có tên đó trong cây nguồn và trong điều khiển phiên bản. Tuy nhiên, tôi muốn dữ liệu trong tệp nằm trong điều khiển phiên bản gốc và cây nguồn và được đổi tên thành tên "ma thuật" trong khi tạo.

Tôi bắt đầu nghĩ rằng kiến ​​là cách duy nhất để thực hiện việc này một cách tự động. Có cách nào dễ hơn không?

+0

http://maven.apache.org/plugins/maven-resources-plugin/ Điều này có thể giúp bạn, –

+5

Plugin tài nguyên không cho phép đổi tên. Đó là vấn đề của tôi. – wmorrell

+0

Bạn cũng có thể xem http://maven.apache.org/plugins/maven-assembly-plugin/. Nhưng tôi không chắc chắn bạn có thể đổi tên các tập tin: Tôi không bao giờ sử dụng plugin này theo cách này. –

Trả lời

15

tôi thấy 2 lựa chọn để giải quyết vấn đề của bạn:

+2

Tôi đã đi với các plugin antrun, với một trong thực hiện trong giai đoạn chuẩn bị-gói để tạo ra các đổi tên '. DS_Store', và một trong giai đoạn xác minh để xóa nó (chỉ trong trường hợp ...). Có vẻ như nó đang hoạt động, cảm ơn! – wmorrell

12

Bạn có thể tránh người đứng đầu giao Ant bằng Maven Assembly pluginfile assembly descriptor.

+0

Không được bộ tập tin hỗ trợ. Vì vậy, bạn không thể áp dụng một mẫu cho nó: ( – BeepDog

+0

Đổi tên tệp có thể được thực hiện với sự phụ thuộcSets trong plugin lắp ráp. – mojoken

+7

bạn có thể cung cấp ví dụ không?Có rất nhiều tài liệu ở đó! –

14

Ví dụ sử dụng các plugin lắp ráp để sao chép và/hoặc đổi tên một tập tin:

tập tin pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2.1</version> 
     <configuration> 
      <descriptors> 
      <descriptor>src/main/descriptors/example.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Descriptor file:

<?xml version="1.0" encoding="UTF-8"?> 
<assembly> 
     <id>example</id> 
     <formats> 
       <format>dir</format> 
     </formats> 
     <files> 
       <file> 
        <source>src/main/resources/something.properties</source> 
        <outputDirectory>/</outputDirectory> 
        <destName>something.properties</destName> 
       </file> 
       <file> 
        <source>src/main/resources/something.properties</source> 
        <outputDirectory>/</outputDirectory> 
        <destName>something_en.properties</destName> 
       </file> 
     </files> 
</assembly> 
+2

Thật không may, có vẻ như là không hỗ trợ ký tự đại diện *. Tôi ước gì tôi có thể làm SMT như src/main/nguồn/* tính. $ {} nguồn -suffix CuongHuyTo

21

Sử dụng antrun-maven-plugin làm cho nó dễ dàng, nhưng trong trường hợp bạn đang tìm kiếm một cách mavenish hơn được hỗ trợ trong eclipse m2e, sau đó bạn có thể sử dụng copy-rename-maven-plugin

<plugin> 
    <groupId>com.coderplus.maven.plugins</groupId> 
    <artifactId>copy-rename-maven-plugin</artifactId> 
    <version>1.0.1</version> 
    <executions> 
     <execution> 
     <id>rename-file</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>rename</goal> 
     </goals> 
     <configuration> 
      <sourceFile>${project.build.outputDirectory}/default.DS_Store</sourceFile> 
      <destinationFile>${project.build.outputDirectory}/.DS_Store</destinationFile> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Và trong trường hợp bạn có bất kỳ thông tin phản hồi/vấn đề với các plugin, bạn có thể tiếp cận tại https://github.com/coderplus/copy-rename-maven-plugin/

6

tôi đã cùng một vấn đề bằng cách sử dụng sao chép đổi tên-maven-plugin giải quyết vấn đề của tôi

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>com.coderplus.maven.plugins</groupId> 
     <artifactId>copy-rename-maven-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
      <execution> 
      <id>copy-file</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <sourceFile>src/someDirectory/test.environment.properties</sourceFile> 
       <destinationFile>target/someDir/environment.properties</destinationFile> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+0

sự khác biệt để @coderplus' câu trả lời trước đó là gì? –

+0

Tôi sử dụng mục tiêu sao chép để giải quyết trường hợp sử dụng của tôi @coderplus thực hiện đổi tên –

Các vấn đề liên quan