Maven命令行

7 java debugging command-line maven-2

是否可以在构建配置文件中设置环境变量,而不是在命令行中设置它们?

例如,我想在我使用我的测试环境时启用调试器(-Denv = test).

我想要maven这样做:

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
Run Code Online (Sandbox Code Playgroud)

这样,我可以快速连接调试器,而无需反复输入相同的重复行.

在这种情况下,我不相信帮助我:

<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>
Run Code Online (Sandbox Code Playgroud)

沃尔特

Ric*_*ler 11

在最新版本的Maven中,你可以通过运行mvnDebug而不是mvn来激活调试器,mvnDebug bat/sh文件设置MVN__DEBUG_OPTS并将它们传递给java.exe.传递的值是:

set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
Run Code Online (Sandbox Code Playgroud)

如果这还不够,这可能有用(注意我还没有测试过,我会更新一次).Maven读取前缀为"env"的属性.从环境中,您可以通过前缀相同来设置环境变量.即:

<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>
Run Code Online (Sandbox Code Playgroud)

更新:surefire插件允许您指定在测试执行期间使用的系统属性.配置如下:

<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>
Run Code Online (Sandbox Code Playgroud)

如果这些都不适合您,则可以编写在配置文件中配置的小插件,该插件绑定到初始化阶段并设置变量.该插件将具有如下配置:

<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>
Run Code Online (Sandbox Code Playgroud)

在执行期间,插件将使用System.setProperty()设置每个传递的属性.如果前两个不合适或不起作用,这应该解决您的问题.