springboot之maven或gradle打包排除依赖或文件,解决:failed with MalformedInputException

Maven

springboot 的maven只能排除依赖不能排除main文件夹里面的文件,源生的maven才可以排除main里的文件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--只在开发过程中使用,但不打包的jar-->
                    <excludes>
                        <exclude>
                            <groupId>io.github.yedaxia</groupId>
                            <artifactId>japidocs</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!--源生maven-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <!--不打包的内容文件-->
                        <exclude>com/fu/demo/JApiDocs.class</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

打包编译resources资源文件时异常

failed with MalformedInputException
引入resources插件,排除编译的文件类型

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <!-- 不编译,直接打包的文件类型,防止打包失败。如:xls、pdf、wrod文档等 -->
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

Gradle

dependencies {
	implementation 'groupId:artifactId:version'//Gradle4.1新增的依赖方式,该依赖方式不会产生传递依赖
	compileOnly 'groupId:artifactId:version'//仅编译时使用,不参与打包,如:lombok只在编译时使用,编译后不需要用到
	annotationProcessor 'groupId:artifactId:version'//注解注释器,不参与打包,如:lombok使用的注解需要用到
	runtimeClasspath 'groupId:artifactId:version'//仅运行时使用,不参与编译,参与打包,如:mysql-connector-java驱动
	testCompileClasspath 'groupId:artifactId:version'//仅测试时使用,参与测试时编译,运行,不参与打包
	testRuntimeClasspath 'groupId:artifactId:version'//仅测试运行时使用,不参与编译、打包
}

bootJar {
	//排除jar
    exclude 'japidocs-1.4.4.jar'
    //排除文件
    exclude 'com/rd/fu/JApiDocs.class'
}

//打包排除的文件(不推荐)
//sourceSets{
//     main{
//         //排除java文件夹下面的文件
//         java{
//            exclude 'com/fu/gradledemo/JApiDocs.java'
//         }
//         //排除resources静态资源文件夹里面的文件
//         resources{
         exclude 'application.yml'
//         }
//     }
//}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 多模块项目结构一般如下: ``` ├── parent │ ├── module1 │ ├── module2 │ └── pom.xml ├── pom.xml └── README.md ``` 其中,`parent` 为父项目,`module1` 和 `module2` 为子模块。 在实际开发中,每个子模块都会有自己的 `pom.xml` 文件,并且通过 `parent` 模块的 `pom.xml` 进行统一管理。 Gradle 是一款基于 Groovy 的构建工具,类似于 MavenGradle 也可以用于构建 Spring Boot 多模块项目。 Gradle 的多模块项目结构与 Maven 类似,也是一个包含多个子项目的根目录,每个子项目有自己的 build.gradle 文件。 下面是一个简单的 Gradle 多模块项目结构: ``` ├── build.gradle ├── settings.gradle ├── module1 │ └── build.gradle └── module2 └── build.gradle ``` 其中,根目录下的 `build.gradle` 和 `settings.gradle` 分别用于配置整个项目和所有子项目的基本信息,每个子项目有自己的 `build.gradle` 配置文件。 关于 Gradle 如何打包 Spring Boot 多模块项目,可以参考下面的示例: ``` plugins { id 'org.springframework.boot' version '2.4.0' id 'io.spring.dependency-management' version '1.0.10.RELEASE' } group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation platform('org.springframework.boot:spring-boot-dependencies:2.4.0') implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } } task packageAll(type: Zip) { baseName = 'my-application' version = '' destinationDir = file("$buildDir/distributions") from subprojects.output } ``` 在上述示例中,使用了 Gradle 的 `subprojects` 语法,对所有子项目进行了统一配置,并且定义了一个名为 `packageAll` 的任务,用于打包所有子项目的输出文件。执行 `gradle packageAll` 命令即可生成包含所有子项目输出文件的 zip 包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值