2009-08-14 26 views
7

Có thể đặt các biến môi trường trong hồ sơ xây dựng như trái ngược với việc đặt chúng trong dòng lệnh không?Dòng lệnh Maven

Ví dụ: tôi muốn bật trình gỡ lỗi khi đang sử dụng môi trường thử nghiệm của mình (-Denv = test).

Tôi muốn maven để làm điều này:

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n" 

Bằng cách này, tôi có thể nhanh chóng đính kèm một debugger mà không cần phải gõ dòng lặp đi lặp lại ngày này qua ngày.

Tôi không tin rằng sẽ giúp tôi trong trường hợp này:

<plugin> 
... 
<!-- Automatically enable the debugger when running Jetty --> 
        <argLine>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n</argLine> 
       </configuration> 
... 
</plugin> 

Walter

Trả lời

11

Trong các phiên bản gần đây của Maven bạn có thể kích hoạt các chương trình gỡ rối bằng cách chạy mvnDebug hơn mvn, các mvnDebug tập tin bat/sh MVN__DEBUG_OPTS và chuyển chúng đến java.exe. Các giá trị được chuyển đến là:

set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 

Nếu không đủ, điều này có thể hoạt động (lưu ý tôi chưa thử nghiệm, tôi sẽ cập nhật khi có). Maven đọc các thuộc tính có tiền tố là "env." từ môi trường, bạn có thể đặt các biến môi trường bằng cách thêm tiền tố giống nhau. tức là:

<profile> 
    <id>dev</id> 
    <properties> 
    <env.MAVEN_OPTS>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000<env.MAVEN_OPTS> 
    </properties> 
</profile> 

Cập nhật: Plugin chắc chắn cho phép bạn sử dụng specify system properties để thực hiện kiểm tra. Cấu hình như sau:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>propertyName</name> 
     <value>propertyValue</value> 
     </property> 
    </systemProperties> 
    </configuration> 
</plugin> 

Nếu không có cách nào phù hợp với bạn, bạn có thể viết một plugin nhỏ được cấu hình trong hồ sơ liên kết với giai đoạn khởi tạo và đặt biến của bạn. Plugin sẽ có cấu hình như sau:

<plugin> 
    <groupId>name.seller.rich</groupId> 
    <artifactId>maven-environment-plugin</artifactId> 
    <version>0.0.1</version> 
    <executions> 
    <execution> 
     <id>set-properties</id> 
     <phase>initialize</phase> 
     <goals> 
     <goal>set-properties</goal> 
     </goals> 
    </execution> 
    </executions>        
    <configuration> 
    <properties> 
     <env.MAVEN_OPTS>-Xdebug -Xnoagent -Djava.compiler=NONE 
      -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000<env.MAVEN_OPTS> 
    </properties> 
    </configuration> 
</plugin> 

trong khi thực thi plugin sẽ đặt từng thuộc tính được chuyển bằng System.setProperty(). Nếu hai cái đầu không phù hợp hoặc không hoạt động, điều này sẽ giải quyết được vấn đề của bạn.

+0

Hi Rich, Lệnh mvnDebug hoạt động, nhưng dường như đã treo một chút và ăn nhiều bộ nhớ. Tôi chưa có may mắn với những lựa chọn khác, nhưng tôi sẽ tiếp tục cố gắng. Walter –

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