Maven教程.01- settings.xml 文件<profile>使用详解

以下是 Maven settings.xml<profile>(配置文件)的完整、深入、实战级详解,涵盖定义、激活方式、使用场景、最佳实践和常见陷阱。


🎯 一、什么是 <profile>

在 Maven 的 settings.xml 中,<profile>环境感知的配置集合,允许你根据不同的条件(如 JDK 版本、操作系统、系统属性等)动态启用一组配置,包括:

  • 自定义仓库(repositories)
  • 自定义插件仓库(pluginRepositories)
  • 自定义属性(properties)
  • 自定义激活条件(activation)

关键点<profile>Maven 的"条件配置"机制 ,让你一套配置适配多个环境(开发、测试、生产),而无需修改 pom.xml


🧩 二、<profile> 基本结构

<XML>

XML 复制代码
<profiles>
  <profile>
    <!-- 唯一标识符,用于激活或引用 -->
    <id>dev</id>

    <!-- 激活条件(可选) -->
    <activation>
      <activeByDefault>true</activeByDefault>
      <jdk>11</jdk>
      <os>
        <name>Windows 10</name>
        <family>Windows</family>
      </os>
      <property>
        <name>env</name>
        <value>development</value>
      </property>
      <file>
        <exists>src/main/resources/dev.properties</exists>
        <missing>prod.properties</missing>
      </file>
    </activation>

    <!-- 配置内容 -->
    <properties>
      <env>development</env>
      <db.url>jdbc:mysql://localhost:3306/dev_db</db.url>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <repositories>
      <repository>
        <id>dev-repo</id>
        <url>https://nexus.dev.company.com/repository/maven-public/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
      </repository>
    </repositories>

    <pluginRepositories>
      <pluginRepository>
        <id>dev-plugins</id>
        <url>https://nexus.dev.company.com/repository/maven-plugins/</url>
      </pluginRepository>
    </pluginRepositories>
  </profile>
</profiles>

🔍 三、<activation> 激活方式详解(重点!)

✅ 1. activeByDefault ------ 默认激活

<XML>

XML 复制代码
<activation>
  <activeByDefault>true</activeByDefault>
</activation>
  • 作用:当没有任何其他 profile 被显式激活时,自动启用此 profile。
  • 注意 :如果多个 profile 都设为 activeByDefault=trueMaven 会报错
  • 适用场景:开发环境默认使用 dev profile。

⚠️ 陷阱 :不要在多个 profile 中同时设置 activeByDefault=true


✅ 2. <jdk> ------ 根据 JDK 版本激活

<XML>

XML 复制代码
<activation>
  <jdk>11</jdk>
</activation>
  • 支持格式:
    • 11:精确匹配 JDK 11
    • 1.8:JDK 8
    • [1.8,11):范围(大于等于 1.8,小于 11)
    • [11,):大于等于 11
    • (,11):小于 11
✅ 实战:为 JDK 17 设置编译参数

<XML>

XML 复制代码
<profile>
  <id>jdk-17</id>
  <activation>
    <jdk>17</jdk>
  </activation>
  <properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.release>17</maven.compiler.release>
  </properties>
</profile>

✅ 优势:不同开发者用不同 JDK,无需改代码,自动适配!


✅ 3. <os> ------ 根据操作系统激活

<XML>

XML 复制代码
<activation>
  <os>
    <name>Windows 10</name>
    <family>Windows</family>
    <arch>x86_64</arch>
    <version>10.0.19045</version>
  </os>
</activation>
  • family 常用值:Windows, Unix, Mac
  • name:操作系统全名(如 Windows 10, Linux, Mac OS X
  • arch:架构(x86_64, aarch64
  • version:版本号
✅ 实战:Windows 上启用特定插件

<XML>

XML 复制代码
<profile>
  <id>windows-native</id>
  <activation>
    <os>
      <family>Windows</family>
    </os>
  </activation>
  <properties>
    <native.lib.path>C:/native/libs</native.lib.path>
  </properties>
</profile>

✅ 4. <property> ------ 根据系统属性激活(最常用!)

<XML>

XML 复制代码
<activation>
  <property>
    <name>env</name>
    <value>production</value>
  </property>
</activation>
  • 激活条件:当命令行或系统中设置了 env=production

  • 激活命令

    <BASH>

    XML 复制代码
    mvn clean package -Denv=production
✅ 实战:多环境配置(推荐!)

<XML>

XML 复制代码
<profile>
  <id>dev</id>
  <activation>
    <property>
      <name>env</name>
      <value>development</value>
    </property>
  </activation>
  <properties>
    <env>development</env>
    <db.url>jdbc:mysql://localhost:3306/dev</db.url>
    <log.level>DEBUG</log.level>
  </properties>
</profile>

<profile>
  <id>prod</id>
  <activation>
    <property>
      <name>env</name>
      <value>production</value>
    </property>
  </activation>
  <properties>
    <env>production</env>
    <db.url>jdbc:mysql://prod-db.company.com:3306/app</db.url>
    <log.level>INFO</log.level>
  </properties>
</profile>

最佳实践 :团队统一使用 -Denv=xxx 激活,清晰、可控、可自动化。


✅ 5. <file> ------ 根据文件存在/不存在激活

<XML>

XML 复制代码
<activation>
  <file>
    <exists>config/local.conf</exists>      <!-- 文件存在则激活 -->
    <missing>config/prod.conf</missing>    <!-- 文件不存在则激活 -->
  </file>
</activation>
  • exists:指定路径的文件存在时激活
  • missing:指定路径的文件不存在时激活
✅ 实战:本地开发配置

<XML>

XML 复制代码
<profile>
  <id>local-dev</id>
  <activation>
    <file>
      <exists>local.properties</exists>
    </file>
  </activation>
  <properties>
    <db.url>jdbc:h2:mem:testdb</db.url>
  </properties>
</profile>

✅ 适用场景:本地开发时创建 local.properties 文件,自动切换为 H2 内存数据库,避免误连生产库。


📦 四、<profile> 中可配置的内容

配置项 说明
<properties> 定义键值对,可在 pom.xml 或资源文件中使用 ${env}${db.url}
<repositories> 添加或覆盖仓库(追加,不覆盖 pom 中的)
<pluginRepositories> 添加插件仓库
<dependencies> 不能在 settings.xml 的 profile 中定义依赖!
<build> 不能定义插件或资源过滤等构建配置!

⚠️ 重要限制settings.xml 中的 profile 只能影响仓库、属性、插件仓库 ,不能影响项目构建逻辑(如编译、打包、资源过滤)。

构建逻辑应放在 pom.xml<profile> 中!

✅ 正确做法:settings.xml + pom.xml 配合

  • settings.xml:管理仓库、认证、镜像、全局属性(如环境变量)
  • pom.xml:管理项目构建(插件、资源过滤、依赖)
示例:pom.xml 中使用 ${env}

<XML>

XML 复制代码
<build>
  <filters>
    <filter>src/main/filters/${env}.properties</filter>
  </filters>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

src/main/resources/application.properties

<PROPERTIES>

XML 复制代码
db.url=${db.url}
log.level=${log.level}

执行:

<BASH>

XML 复制代码
mvn clean package -Denv=prod

→ Maven 会自动用 settings.xmlprod profile 的 db.urllog.level 替换!


🚀 五、激活 Profile 的方式总结

方式 命令/配置 优先级
1. <activeByDefault> true</activeByDefault> 自动激活(无其他激活时)
2. 命令行 -P profile-id mvn clean install -P dev 最高
3. 系统属性 -Denv=xxx mvn ... -Denv=production 高(需 profile 中配置 <property>
4. <activeProfiles> 中声明 settings.xml 中预设
5. 文件存在/不存在 <file> 检测
6. JDK/OS 条件 <jdk><os>

优先级顺序 (从高到低):
-P 命令行 > <activeProfiles> > <property>/<file>/<jdk>/<os> > activeByDefault


📌 六、<activeProfiles> ------ 预设激活

settings.xml 中:

<XML>

XML 复制代码
<activeProfiles>
  <activeProfile>dev</activeProfile>
  <activeProfile>jdk-11</activeProfile>
</activeProfiles>
  • 作用 :即使没有 -P 或系统属性,也会默认激活这些 profile。
  • 注意不触发 <activation> 条件,直接启用。
  • 适用场景:团队统一开发环境(如所有成员默认用 dev profile)

⚠️ 如果你用 -P prod,它会覆盖 <activeProfiles> 中的 profile!


🧪 七、实战案例:完整多环境配置

✅ 场景:一个项目需要支持 dev / test / prod 三环境

1. settings.xml

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <property>
        <name>env</name>
        <value>development</value>
      </property>
    </activation>
    <properties>
      <env>development</env>
      <db.url>jdbc:mysql://localhost:3306/dev</db.url>
      <log.level>DEBUG</log.level>
    </properties>
    <repositories>
      <repository>
        <id>dev-repo</id>
        <url>https://nexus.dev.company.com/repository/maven-public/</url>
      </repository>
    </repositories>
  </profile>

  <profile>
    <id>prod</id>
    <activation>
      <property>
        <name>env</name>
        <value>production</value>
      </property>
    </activation>
    <properties>
      <env>production</env>
      <db.url>jdbc:mysql://prod-db.company.com:3306/app</db.url>
      <log.level>INFO</log.level>
    </properties>
    <repositories>
      <repository>
        <id>prod-repo</id>
        <url>https://repo.company.com/maven</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
      </repository>
    </repositories>
  </profile>

  <profile>
    <id>local</id>
    <activation>
      <file>
        <exists>local.properties</exists>
      </file>
    </activation>
    <properties>
      <env>local</env>
      <db.url>jdbc:h2:mem:test</db.url>
    </properties>
  </profile>
</profiles>

<activeProfiles>
  <activeProfile>dev</activeProfile>
</activeProfiles>
2. pom.xml 中启用资源过滤

<XML>

XML 复制代码
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>
3. src/main/resources/application.properties

<PROPERTIES>

XML 复制代码
db.url=${db.url}
log.level=${log.level}
4. 启动命令
环境 命令
开发 mvn spring-boot:run -Denv=development
生产 mvn package -Denv=production
本地 创建 local.properties 文件 → mvn spring-boot:run

⚠️ 八、常见陷阱与避坑指南

问题 原因 解决方案
Profile 不生效 没有正确激活,或拼写错误 mvn help:effective-settings 查看最终生效的 profile
密码明文存储 <server> 中 password 未加密 使用 settings-security.xml 加密
多个 activeByDefault Maven 报错 只保留一个
仓库没生效 profile 中的 <repository> 没有被激活 检查是否通过 -P-Denv=xxx 正确激活
属性未替换 pom.xml 中未开启 <filtering> true</filtering> 确保资源过滤已开启
误用 profile 做构建逻辑 想在 settings.xml 中配置插件 ❌ 不行!应放在 pom.xml 的 profile 中

✅ 九、最佳实践总结

建议 说明
使用 -Denv=xxx 激活 最清晰、可自动化、团队统一
避免 activeByDefault=true 多个 防止冲突
配合 pom.xml 资源过滤 实现配置动态替换
加密敏感信息 settings-security.xml 加密密码
不要在 settings.xml 中定义依赖或插件 它不是构建配置中心,是连接配置中心
团队共享模板 提供标准 settings.xml 模板,减少环境差异
测试激活 mvn help:active-profiles 查看当前激活的 profile

🔎 十、调试命令(必学!)

命令 作用
mvn help:active-profiles 查看当前激活的 profile
mvn help:effective-settings 查看最终生效的 settings.xml(合并全局+用户)
mvn help:effective-pom 查看最终生效的 pom.xml(含 profile 替换)
mvn -X 开启调试模式,查看 profile 加载过程

💡 示例:

<BASH>

XML 复制代码
mvn help:active-profiles -Denv=prod

输出:

<TEXT>

XML 复制代码
Active Profiles for Project ...:

The following profiles are active:

 - prod (source: settings.xml)

下面通过 多个真实、可运行的实例 ,手把手教你如何在 Maven 的 settings.xml 中定义 <profile>,并用不同方式激活它。每个实例都包含完整的配置 + 命令 + 验证方式,确保你一看就懂、一用就会。


✅ 实例 1:使用 -P 命令行参数激活 Profile(最常用)

🎯 场景

你希望在部署到生产环境时,使用私有仓库并关闭快照依赖。

🔧 步骤 1:在 ~/.m2/settings.xml 中定义 profile

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>prod</id>
    <properties>
      <env>production</env>
      <log.level>INFO</log.level>
    </properties>
    <repositories>
      <repository>
        <id>company-repo</id>
        <url>https://nexus.company.com/repository/maven-releases/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
      </repository>
    </repositories>
  </profile>
</profiles>

✅ 注意:这里没有 <activation>,所以不会自动激活,必须手动触发。

🔧 步骤 2:执行命令激活

<BASH>

XML 复制代码
mvn clean package -P prod

🔍 步骤 3:验证是否激活成功

<BASH>

XML 复制代码
mvn help:active-profiles -P prod

输出示例:

<TEXT>

XML 复制代码
Active Profiles for Project com.example:myapp:jar:1.0.0:

The following profiles are active:

 - prod (source: settings.xml)

✅ 成功!Maven 使用了 prod profile 中定义的仓库和属性。

💡 为什么有效?

  • -P prod 显式指定了要激活的 profile ID。
  • 优先级最高,覆盖所有自动激活规则

✅ 实例 2:使用系统属性 -Denv=xxx 激活(推荐企业级)

🎯 场景

你想根据环境变量自动切换数据库连接,而无需每次手动输入 -P

🔧 步骤 1:在 settings.xml 中配置带条件的 profile

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <property>
        <name>env</name>
        <value>development</value>
      </property>
    </activation>
    <properties>
      <env>development</env>
      <db.url>jdbc:mysql://localhost:3306/dev_db</db.url>
      <log.level>DEBUG</log.level>
    </properties>
  </profile>

  <profile>
    <id>prod</id>
    <activation>
      <property>
        <name>env</name>
        <value>production</value>
      </property>
    </activation>
    <properties>
      <env>production</env>
      <db.url>jdbc:mysql://prod-db.company.com:3306/app</db.url>
      <log.level>INFO</log.level>
    </properties>
  </profile>
</profiles>

🔧 步骤 2:执行命令激活

<BASH>

XML 复制代码
# 激活开发环境
mvn clean compile -Denv=development

# 激活生产环境
mvn clean compile -Denv=production

🔍 步骤 3:验证激活

<BASH>

XML 复制代码
mvn help:active-profiles -Denv=development

输出:

<TEXT>

XML 复制代码
Active Profiles for Project com.example:myapp:jar:1.0.0:

The following profiles are active:

 - dev (source: settings.xml)

💡 为什么有效?

  • <activation><property><name>env</name><value>development</value></property></activation> 检测系统属性 env=development
  • Maven 在启动时读取 -Denv=xxx,匹配成功则激活 profile
  • 适合 CI/CD:Jenkins、GitHub Actions 中可直接设置环境变量

企业推荐-Denv=xxx 是最灵活、最安全的激活方式,避免了多个 -P 的混乱。


✅ 实例 3:使用 activeByDefault 自动激活(开发默认环境)

🎯 场景

你希望团队所有成员默认使用开发环境配置,无需任何命令。

🔧 步骤 1:在 settings.xml 中设置默认 profile

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>dev-default</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <env>development</env>
      <db.url>jdbc:h2:mem:testdb</db.url>
      <log.level>TRACE</log.level>
    </properties>
  </profile>

  <profile>
    <id>prod</id>
    <activation>
      <property>
        <name>env</name>
        <value>production</value>
      </property>
    </activation>
    <properties>
      <env>production</env>
      <db.url>jdbc:mysql://prod-db:3306/app</db.url>
    </properties>
  </profile>
</profiles>

🔧 步骤 2:直接执行命令(不加任何参数)

<BASH>

XML 复制代码
mvn clean compile

🔍 步骤 3:验证

<BASH>

XML 复制代码
mvn help:active-profiles

输出:

<TEXT>

XML 复制代码
Active Profiles for Project com.example:myapp:jar:1.0.0:

The following profiles are active:

 - dev-default (source: settings.xml)

✅ 成功!即使没加 -P-Denvdev-default 也被自动激活。

⚠️ 陷阱提醒:

如果你再加一个 activeByDefault=true 的 profile,Maven 会报错:

<TEXT>

XML 复制代码
[ERROR] Multiple profiles with activeByDefault set: dev-default, dev2

只能有一个 activeByDefault=true


✅ 实例 4:根据文件存在与否激活(本地开发专用)

🎯 场景

你希望在本地开发时,创建一个 local.properties 文件,自动切换为 H2 内存数据库,避免误连真实数据库。

🔧 步骤 1:在 settings.xml 中配置文件检测 profile

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>local</id>
    <activation>
      <file>
        <exists>local.properties</exists>
      </file>
    </activation>
    <properties>
      <env>local</env>
      <db.url>jdbc:h2:mem:localdb</db.url>
      <log.level>DEBUG</log.level>
    </properties>
  </profile>
</profiles>

🔧 步骤 2:在项目根目录创建文件

<BASH>

XML 复制代码
touch local.properties

✅ 文件位置:必须和 pom.xml同一目录(Maven 以项目根目录为基准)

🔧 步骤 3:执行命令

<BASH>

XML 复制代码
mvn clean compile

🔍 步骤 4:验证激活

<BASH>

XML 复制代码
mvn help:active-profiles

输出:

<TEXT>

XML 复制代码
Active Profiles for Project com.example:myapp:jar:1.0.0:

The following profiles are active:

 - local (source: settings.xml)

💡 为什么有效?

  • Maven 检查项目根目录下是否存在 local.properties
  • 存在 → 激活 local profile
  • 删除文件 → 自动失效

安全设计:本地开发时创建文件,CI/CD 环境没有该文件,自动使用 prod 配置,避免误操作!


✅ 实例 5:根据 JDK 版本自动激活(Java 8 vs Java 17)

🎯 场景

你的团队有人用 Java 8,有人用 Java 17,希望自动设置编译参数。

🔧 步骤 1:在 settings.xml 中配置 JDK 专属 profile

<XML>

XML 复制代码
<profiles>
  <profile>
    <id>jdk8</id>
    <activation>
      <jdk>1.8</jdk>
    </activation>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  </profile>

  <profile>
    <id>jdk17</id>
    <activation>
      <jdk>17</jdk>
    </activation>
    <properties>
      <maven.compiler.source>17</maven.compiler.source>
      <maven.compiler.target>17</maven.compiler.target>
      <maven.compiler.release>17</maven.compiler.release>
    </properties>
  </profile>
</profiles>

🔧 步骤 2:切换 JDK 并验证

情况一:使用 JDK 8

<BASH>

XML 复制代码
# 设置 JAVA_HOME 指向 JDK 8
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk

mvn clean compile
mvn help:active-profiles

输出:

<TEXT>

XML 复制代码
 - jdk8 (source: settings.xml)
情况二:使用 JDK 17

<BASH>

XML 复制代码
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk

mvn clean compile
mvn help:active-profiles

输出:

<TEXT>

XML 复制代码
 - jdk17 (source: settings.xml)

✅ 无需手动干预,Maven 自动识别 JDK 并应用正确配置!


✅ 实例 6:使用 <activeProfiles> 预设激活(团队统一配置)

🎯 场景

你希望所有团队成员默认启用 dev 和 jdk17,即使不传参数。

🔧 步骤 1:在 settings.xml 中配置 <activeProfiles>

<XML>

XML 复制代码
<activeProfiles>
  <activeProfile>dev</activeProfile>
  <activeProfile>jdk17</activeProfile>
</activeProfiles>

<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <property>
        <name>env</name>
        <value>development</value>
      </property>
    </activation>
    <properties>
      <env>development</env>
    </properties>
  </profile>

  <profile>
    <id>jdk17</id>
    <activation>
      <jdk>17</jdk>
    </activation>
    <properties>
      <maven.compiler.release>17</maven.compiler.release>
    </properties>
  </profile>
</profiles>

🔧 步骤 2:使用 JDK 17,不传任何参数

<BASH>

XML 复制代码
mvn clean compile

🔍 步骤 3:验证

<BASH>

XML 复制代码
mvn help:active-profiles

输出:

<TEXT>

XML 复制代码
Active Profiles for Project com.example:myapp:jar:1.0.0:

The following profiles are active:

 - dev (source: settings.xml)
 - jdk17 (source: settings.xml)

✅ 两个 profile 都被预设激活了!

⚠️ 注意:

  • <activeProfiles> 中的 profile 必须存在,否则忽略
  • 如果你用 -P prod,它会覆盖 <activeProfiles> 中的 profile

📊 总结:激活 Profile 的 5 种方式对比

激活方式 配置位置 命令示例 是否推荐 适用场景
-P profile-id 命令行 mvn -P prod ✅✅✅ 强烈推荐 手动切换、CI/CD
-Denv=xxx <activation> <property> mvn -Denv=production ✅✅✅ 企业首选 环境驱动、自动化
activeByDefault=true <activation> 无命令 ✅ 推荐(仅一个) 团队默认开发环境
<file><exists> <activation> 无命令 ✅ 推荐 本地开发隔离
<activeProfiles> 根节点 无命令 ✅ 推荐 团队统一预设

💡 终极建议
-Denv=xxx + <activeProfiles> 预设 dev,既灵活又安全,是企业级标准做法!


✅ 附:快速验证脚本(一键测试)

创建一个脚本 test-profiles.sh

<BASH>

XML 复制代码
#!/bin/bash

echo "=== 测试 Profile 激活 ==="

# 清理
rm -f local.properties

# 测试1:默认(无参数)
echo "1. 默认激活:"
mvn help:active-profiles

# 测试2:使用 -Denv=development
echo -e "\n2. 激活 dev: mvn -Denv=development"
mvn help:active-profiles -Denv=development

# 测试3:创建 local.properties
touch local.properties
echo -e "\n3. 创建 local.properties,激活 local:"
mvn help:active-profiles

# 测试4:使用 -P prod
echo -e "\n4. 激活 prod: mvn -P prod"
mvn help:active-profiles -P prod

# 清理
rm -f local.properties

运行:

<BASH>

XML 复制代码
chmod +x test-profiles.sh
./test-profiles.sh

✅ 结语:<profile> 是 Maven 的"智能开关"

settings.xml 中的 <profile> 不是简单的配置块,而是让 Maven 拥有"环境感知"能力的神器。

  • ✅ 一套配置,适配多环境
  • ✅ 无需修改代码,切换数据库、日志、仓库
  • ✅ 与 CI/CD 集成(Jenkins、GitLab CI 中传 -Denv=xxx
  • ✅ 避免"我在本地能跑,线上就崩"的噩梦

🎯 掌握这些实例,你就能在任何项目中灵活、安全、高效地使用 Maven Profile!

相关推荐
快乐非自愿1 小时前
C# 中的 Span 和内存:.NET 中的高性能内存处理
java·c#·.net
Diligently_2 小时前
idea 中vm option 配置
java·ide·intellij-idea
短剑重铸之日2 小时前
《Seata从入门到实战》第七章:seata总结
java·后端·seata
予枫的编程笔记2 小时前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
上官-王野2 小时前
公务员暂停工伤保险
java
亓才孓2 小时前
【反射机制】
java·javascript·jvm
you-_ling3 小时前
线程及进程间通信
java·开发语言
莫寒清3 小时前
Apache Tika
java·人工智能·spring·apache·知识图谱
昱宸星光3 小时前
spring cloud gateway内置网关filter
java·服务器·前端