2012-04-05 33 views
10

Tôi đã nhận thấy khi bạn định cấu hình dự án Maven để sử dụng thuộc tính lọc, tính năng lọc thuộc tính dường như cũng hoạt động trong IntelliJ không tạo "make". Điều này có nghĩa là cấu hình chạy IntelliJ cho Jetty/Tomcat/GWT/Glassfish sẽ vẫn tôn trọng việc lọc tài nguyên của bạn.Hỗ trợ lọc Maven của IntelliJ hoạt động như thế nào?

Vì vậy, nếu tôi thêm video này vào pom.xml tôi:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/persistence.xml</include> 
      </includes> 
     </resource> .... 

Nên lọc bất kỳ tài sản trong tài sản của tôi và các tập tin peristence.xml trước khi bất kỳ chạy IntelliJ cấu hình khởi động. Điều này rất hữu ích khi hoán đổi trong các tham chiếu JDBC hoặc các tham số hệ thống tập tin.

Vấn đề duy nhất mà tôi gặp phải là IntelliJ dường như chỉ tôn trọng lọc trong src/main/resources ngay cả khi tôi thay đổi pom.xml để có mục nhập thứ hai cho các thư mục khác (ví dụ: src/integrationtest/resources).

Tất cả điều này có vẻ là "tự động". Vậy nó hoạt động như thế nào và ở đâu (nếu có) tôi có thể cấu hình nó không?

Trả lời

2

Các tính năng của IntelliJ IDEA có khả năng lọc tài nguyên Maven. Tuy nhiên, IntelliJ IDEA chưa hỗ trợ lọc tài nguyên web.

nguồn: http://www.jetbrains.com/idea/webhelp/maven.html#compile
Không biết thêm chi tiết về hỗ trợ này trong toàn bộ webhelp IntelliJ mặc dù, vì vậy tôi đoán nó sẽ hoạt động giống như giai đoạn quá trình nguồn maven của không.

Sự cố bạn gặp phải có thể do thư mục src/integrationtest/resources không tuân theo quy ước maven. Có lẽ nó sẽ làm việc nếu bạn:

  • làm cho nó src/test/resources/integrationtest/

hoặc

  • configure maven tôn trọng src/integrationtest như nguồn thử nghiệm (nhưng nếu integrationtest không ước nó nổi tiếng sẽ vi phạm quy tắc COC của maven)

hoặc

  • làm cho nó khác maven (sub) mô-đun, nếu bạn muốn nhấn mạnh cô lập của integrationtest

Đối với thư mục lọc khác nhau mà src/main/resources: lọc src/main/webapp/META-INF làm việc out-of-a-box cho tôi.
(Maven 3.0.4, Intellij 12.1.4)

2

Tin tốt, có vẻ như vấn đề này sẽ được cố định ở 13,1

http://youtrack.jetbrains.com/issue/IDEA-25934

EDIT: Xin lỗi nếu không đủ rõ ràng, trường hợp lỗi là chỉ được đánh dấu là "cố định" mà không giải thích thêm ... Nhưng tôi đã thử nghiệm trong phiên bản EAP 13.1 (xây dựng 134.1445) và trong khi IntelliJ trước đó sẽ ghi đè các tài nguyên, nó bây giờ bảo toàn tài nguyên web được lọc bởi Maven.

+0

hiện giải pháp trong vấn đề IDEA-25.934 công trình đối với tôi bởi thêm WEB-INF marstone

-1

Đừng quên để xác định một cấu hình mặc định

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile> 
</profiles> 
0

Intellij (Tôi đang sử dụng 14,1) không cho phép bạn xác định nhiệm vụ tùy chỉnh Ant như trước/sau xử lý trong quá trình tạo tác xây dựng.

Chuyển đến Cấu trúc dự án -> Hiện vật -> {chọn artifact} -> {Pre-processing | Post-processing} tab.

Vì vậy, ví dụ, tôi có thể sử dụng các nhiệm vụ đơn giản sau đây để mô phỏng lọc tài nguyên trong trường hợp nó không hoạt động ra khỏi hộp:

<target name="filter" depends="clean"> 
    <copy todir="${maven.build.dir}/${maven.build.finalName}"> 
     <fileset dir="${maven.build.resourceDir.0}"/> 
     <filterset begintoken="${" endtoken="}"> 
      <filter token="project.version" value="${project.version}"/> 
     </filterset> 
    </copy> 
</target> 
Các vấn đề liên quan