Java Maven命令行

Java Maven命令行,java,maven-2,command-line,debugging,Java,Maven 2,Command Line,Debugging,是否可以在构建概要文件中设置环境变量,而不是在命令行中设置它们 例如,我希望在使用测试环境(-Denv=test)时启用调试器 我希望maven做到这一点: export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n" 通过这种方式,我可以快速附加调试器,而不必反复键入相同的重复行 在这种情况下,我不相信这对我有帮助

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

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

我希望maven做到这一点:

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
通过这种方式,我可以快速附加调试器,而不必反复键入相同的重复行

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

<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>

...
-Xdebug-Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,地址=4000,服务器=y,挂起=n
...

Walter

在Maven的最新版本中,您可以通过运行mvnDebug而不是mvn来激活调试器,mvnDebug bat/sh文件设置mvn\uu调试选项并将其传递给java.exe。传递的值为:

set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
如果这还不够,这可能会起作用(注意,我还没有测试过它,我会在测试后更新)。Maven读取以“env”为前缀的属性。从环境中,您可以通过以相同的前缀设置环境变量。i、 e:

<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>

发展
-Xdebug-Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
更新: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>

org.apache.maven.plugins
maven surefire插件
2.4.2
属性名称
财产价值
如果这些都不适合您,那么可以编写一个配置在您的配置文件中的小插件,绑定到初始化阶段并设置变量。插件的配置如下:

<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>

name.seller.rich
maven环境插件
0.0.1
设置属性
初始化
设置属性
-Xdebug-Xnoagent-Djava.compiler=NONE
-Xrunjdwp:transport=dt_套接字,server=y,suspend=y,address=8000

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

Hi-Rich,mvnDebug命令起作用,但它似乎挂起了很多,占用了很多内存。我还没有找到其他的选择,但我会继续尝试。沃尔特