Spring Boot Maven项目中如何阻止Maven下载Sources Jar包
解决Maven自动下载私有依赖Sources Jar包的问题
针对你的情况,Maven尝试下载不存在的AppMaker-2.0.5-sources.jar导致构建失败,这里有几个可行的解决办法,按场景推荐:
1. 全局禁用Sources包下载(适用于所有依赖)
如果你的项目不需要任何依赖的sources包,可以在pom.xml的<properties>中添加全局配置,让Maven跳过所有sources的下载:
<properties> <maven.dependency.sources.skip>true</maven.dependency.sources.skip> </properties>
这个配置会告诉Maven的依赖插件跳过sources包的获取,适用于不需要源码的场景。
2. 针对单个依赖排除Sources包(精准控制)
如果你只需要阻止AppMaker这个依赖的sources下载,其他依赖正常获取,可以在该依赖的配置中添加排除规则,明确排除classifier为sources的子依赖:
<dependency> <groupId>com.test.app.internal</groupId> <artifactId>AppMaker</artifactId> <version>2.0.5</version> <exclusions> <exclusion> <groupId>com.test.app.internal</groupId> <artifactId>AppMaker</artifactId> <classifier>sources</classifier> </exclusion> </exclusions> </dependency>
这样Maven就不会尝试下载这个依赖的sources包了。
3. 调整插件配置(如果是插件触发的下载)
如果是maven-source-plugin或maven-javadoc-plugin这类插件在构建时触发了sources下载,可以针对性修改插件配置:
情况A:禁用maven-source-plugin的源码附加
如果你的项目配置了maven-source-plugin的attach-sources目标(用于打包自身源码),它可能会尝试拉取依赖的sources。你可以直接禁用该插件的执行,或者排除特定依赖:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> <configuration> <!-- 排除AppMaker的源码处理 --> <excludes> <exclude>com/test/app/internal/**</exclude> </excludes> </configuration> </execution> </executions> </plugin> </plugins> </build>
情况B:调整maven-javadoc-plugin的配置
如果是生成javadoc时需要依赖的sources,你可以排除该依赖的javadoc生成:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.4.1</version> <configuration> <!-- 排除AppMaker包的javadoc生成 --> <excludePackageNames>com.test.app.internal:**</excludePackageNames> </configuration> </plugin>
4. 临时命令行跳过(快速测试)
如果你只是临时需要构建项目,不想修改配置,可以在Maven命令中添加参数跳过sources下载:
mvn clean install -Dmaven.dependency.sources.skip=true
这些方法都能解决你的问题,根据你的项目需求选择最合适的即可。
内容的提问来源于stack exchange,提问作者user1332962




