2010-01-29 103 views
14

Tôi có một ứng dụng được phát triển trong môi trường Windows. Bản thân ứng dụng được triển khai vào một môi trường Linux. Mỗi lần tôi triển khai ứng dụng này, tôi phải chuyển đổi các tệp thi hành sang định dạng UNIX bằng dos2unix. Ban đầu tôi nghĩ điều này là do mã hóa CP1252 của Windows, vì vậy tôi đã cập nhật Maven để mã hóa các tệp thành UTF-8. Điều này đã không giải quyết vấn đề của tôi và tôi nhanh chóng phát hiện ra rằng điều này đã làm với trở về vận chuyển và dòng nguồn cấp dữ liệu bằng cách tìm kiếm trang web này. Có cách nào để Maven chuyển đổi tất cả các tập tin sang định dạng UNIX trong quá trình xây dựng? Tôi đang sử dụng Maven 2.2.1 và Java 5.Chuyển đổi tệp sang định dạng UNIX bằng Maven

Trả lời

14

Bạn có thể sử dụng plugin Maven antrun gọi fixcrlf lệnh ant:

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>ant-test</groupId> 
    <artifactId>ant-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>ant-test</id> 
         <phase>package</phase> 
         <configuration> 
          <tasks> 
           <fixcrlf ... /> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+1

tôi đã cố gắng , có vẻ như đang hoạt động. Tôi cũng đang sử dụng các plugin lắp ráp maven và nó bây giờ có vấn đề đọc các tập tin jar do chuyển đổi này. Bất kỳ ý tưởng về cách tôi có thể có được điều này để xây dựng trên một máy Windows? –

+1

Bạn có thể muốn thêm một bao gồm hoặc loại trừ thuộc tính, do đó bạn chỉ thay đổi * .txt hoặc bất kỳ tài nguyên nào bạn đang cố gắng sửa đổi – Kevin

+0

Cảm ơn, bao gồm/loại trừ hoạt động. Nó sửa đổi các tập tin trong thư mục nguồn của tôi mặc dù, sẽ được OK nếu cần thiết, nhưng có cách nào để có plug-in lắp ráp Maven chạy nhiệm vụ kiến ​​này vì nó được xây dựng để tôi sẽ không phải hoàn nguyên hoặc kiểm tra trong các tệp của tôi? –

35

Plugin lắp ráp có một lựa chọn lineEnding mà có thể được sử dụng để kiểm soát dòng kết thúc của các tệp cho một fileSet nhất định. Tham số này chính xác ở đó để làm những gì bạn muốn. Cuối cùng, bạn có thể xây dựng kho lưu trữ zip với các dòng CRLF và lưu trữ tar.gz với các dòng LF.

Ví dụ:

... 
<fileSet> 
    <directory>${basedir}/src/main/build/QA</directory> 
    <outputDirectory>/bin</outputDirectory> 
    <includes> 
     <include>start.sh</include> 
    </includes> 
    <lineEnding>unix</lineEnding> 
</fileSet> 
... 

Giá trị có thể vào thời điểm này bao gồm:

  • "giữ" - Bảo quản tất cả kết thúc dòng
  • "unix" - Sử dụng Unix-phong cách kết thúc dòng (ví dụ "\ n")
  • "lf" - Sử dụng một dòng kết thúc dòng đơn (tức là "\ n")
  • "dos" - Sử dụng dòng kết thúc kiểu DOS-/Windows (tức là "\ r \ n")
  • "windows "- Sử dụng DOS-/Windows kết thúc dòng kiểu (tức là "\ R \ n")
  • "CRLF" - Sử dụng vận chuyển-Đổi lại, dòng nguồn cấp dữ liệu kết thúc dòng (ví dụ "\ r \ n")
Các vấn đề liên quan