如何避免程序控制台输出与Maven构建输出混杂?
问题描述
我用Java 19开发Maven项目,IDE是IntelliJ Ultimate 2022.3。运行程序时,我的程序输出Hello World和Maven构建输出混杂在一起,我希望IntelliJ只显示程序自身的输出。以下是运行日志、pom.xml内容及IDE设置说明,请问该怎么解决?
运行日志
"C:\Program Files\Java\jdk-19\bin\java.exe" "-Dmaven.multiModuleProjectDirectory=E:\HDA\Distributed Systems\vs-projekt" "-Dmaven.home=C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=60937:C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven3\boot\plexus-classworlds.license" org.codehaus.classworlds.Launcher -Didea.version=2022.2.3 "-Dexec.workingdir=E:/HDA/Distributed Systems/vs-projekt" "-Dexec.args=-classpath %classpath Main" "-Dexec.executable=C:\Program Files\Java\jdk-19\bin\java.exe" exec:exec [INFO] Scanning for projects... [INFO] [INFO] -----------------------< org.hda:Mo5x-Burchard >------------------------ [INFO] Building Mo5x-Burchard 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- exec-maven-plugin:3.1.0:exec (default-cli) @ Mo5x-Burchard --- **Hello World** [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.514 s [INFO] Finished at: 2022-11-01T16:50:37+01:00 [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
pom.xml内容
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.hda</groupId> <artifactId>Mo5x-Burchard</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>15</maven.compiler.source> <maven.compiler.target>15</maven.compiler.target> </properties> <build> <defaultGoal>compile</defaultGoal> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> </plugins> </pluginManagement> </build> </project>
IDE设置说明
- Maven构建设置:显示Maven构建相关配置界面
- 项目运行配置:当前使用的是Maven类型的运行配置
- Java编译器设置:显示Java编译器版本等配置界面
解决方案
你当前是通过Maven的exec:exec命令运行程序,所以IntelliJ会输出完整的Maven构建日志,自然会和程序输出混杂。要只显示程序自身输出,有两种可行方法:
方法一:创建Java应用运行配置
- 点击IntelliJ顶部菜单栏「Run」→「Edit Configurations...」
- 点击左上角「+」号,选择「Application」类型
- 在「Main class」中选择你的主类
Main - 确认「Module」选中当前项目模块,「JRE」选择Java 19
- 点击「Apply」保存配置,后续运行这个Java应用配置,就能只看到程序输出
方法二:配置Maven exec插件过滤日志
如果必须用Maven运行,可修改pom.xml给exec-maven-plugin添加配置,让Maven只输出程序日志:
- 在
build标签下新增plugins节点(和原有的pluginManagement同级),添加以下配置:
<build> <!-- 保留原有的pluginManagement内容 --> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <!-- 关闭Maven自身日志输出,仅保留程序输出 --> <quiet>true</quiet> </configuration> </plugin> </plugins> </build>
- 重新运行Maven的exec命令,此时日志只会显示程序的
Hello World
另外注意:你的pom.xml中maven.compiler.source和target设为15,但实际使用Java 19,建议改成19保持版本一致,避免潜在编译问题。
内容的提问来源于stack exchange,提问作者CodingStudent
相关产品推荐
相关产品推荐

