提问者:小点点

IntelliJ IDEA运行配置的命令行版本


我有一个有效的IntelliJ IDEA运行配置。它使用Spring Boot。

我想从MacOS命令行执行相同的运行。如何让IntelliJ IDEA显示我需要执行运行配置的命令(或多个命令)。

这是gradlebuild. gradle文件:

plugins {
    id 'org.springframework.boot' version '2.6.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'org.mountsinai'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = "15"

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
    runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc'
    implementation group: 'org.springframework', name: 'spring-aspects', version: '5.3.15'
    implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '3.0.0'
    implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.7.0'
    implementation group: 'com.github.pcj', name: 'google-options', version: '1.0.0'
    implementation 'com.google.code.gson:gson:2.9.0'
}

tasks.named('test') {
    useJUnitPlatform()
    minHeapSize = "1024m" // initial heap size
    maxHeapSize = "2048m" // maximum heap size
}
targetCompatibility = JavaVersion.VERSION_15

这是中的配置元素。 /.idea/workspace.xml对应于我想在命令行上自动化的运行:

    <configuration name="IrwMetadataIntegrationApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
      <module name="org.mountsinai.IRWMetadataIntegration.main" />
      <option name="SPRING_BOOT_MAIN_CLASS" value="org.mountsinai.IRWMetadataIntegration.IrwMetadataIntegrationApplication" />
      <option name="PROGRAM_PARAMETERS" value="--algorithm=batch --numOfStudiesToRetrieve=600" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
      <option name="ALTERNATIVE_JRE_PATH" value="15" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>

现在可以更具体地询问我最初的问题如何将IDEA配置和workspace. xml文件转换为可以在IntelliJ IDEA之外执行的命令(或脚本)?

使用

IntelliJ IDEA 2021.3.2 (Ultimate Edition) Build #IU-213.6777.52, built on January 27, 2022

谢了亚瑟


共3个答案

匿名用户

在你的控制台顶部注意,有一个命令什么的…java,通常它会折叠成这样短的形式,但是如果你点击它:

在这种情况下,例如,最终,命令是这样的:

/Users/hoaphan/.sdkman/candidates/java/17.0.4-amzn/bin/java -XX:TieredStopAtLevel=1 
-Dspring.output.ansi.enabled=always 
-Dcom.sun.management.jmxremote 
-Dspring.jmx.enabled=true 
-Dspring.liveBeansView.mbeanDomain 
-Dspring.application.admin.enabled=true 
...blahblahblahblahblah...
com.example.bootgradlej17.Bootgradlej17Application

所以你可以通过运行这么长的命令来模仿intelliJ。但我建议如果这是springboot,并且由gradle构建,你真正想做的是在项目根目录中,在你的build. gradle所在的目录中:

./gradlew bootRun

然后,您可以将bootRun配置为从这样的配置开始JVM,例如:

bootRun {
   jvmArgs = "-Dspring.application.admin.enabled=true", "-Dnannana=nenenene" (etc)....
}

匿名用户

通过运行配置执行程序并检查输出的第一行。它应该包含IDE执行的调用,通常类似于java-jar…。

例如。当运行Scratch文件时,我在输出窗口中得到以下内容作为第一行:

/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -javaagent:/home/user/bin/idea-IU-222.3345.47/lib/idea_rt.jar=37117:/home/user/bin/idea-IU-222.3345.47/bin -Dfile.encoding=UTF-8 -classpath /home/user/.cache/JetBrains/IntelliJIdea2022.3/compile-server/backend_dd2372d5/scratches/out:... Scratch

匿名用户

继续我上面的评论…

相反,它们可以在您解释如何显示的java命令中找到。例如,我的是:

-Dspring.output.ansi.enabled=always
-Dcom.sun.management.jmxremote
-Dspring.jmx.enabled=true
-Dspring.liveBeansView.mbeanDomain
-Dspring.application.admin.enabled=true
...

请解释你

bootRun {
   jvmArgs = "-Dspring.application.admin.enabled=true", "-Dnannana=nenenene" (etc)....
}

例子。应该在哪里以及如何使用这段文字?

还需要提供IDEA配置中的任何命令行参数。这些可以通过gradlew--args选项传递,如下所示:

--args='--算法=批处理--numOfStudiesToRetrieve=600'

然而,总的来说,这种方法比我想要的更特别。它需要一个hack a)IDEA的java命令来获取JVM参数,b)通过gradlew--args中的命令行参数。但是我假设IntelliJ IDEA的开发人员的沉默表明他们不支持这个重要的功能。