Maven

基础信息 & 常见配置

  1. Maven(百度百科)

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

  1. Maven依赖查询

Maven依赖库:mvnrepository

  1. Maven 国内源站加速

Aliyun Maven

  1. IDEA maven 依赖冲突解决

Plugins : Maven Helper

  1. IDEA 搜索maven依赖

Plugins: Package Search

Maven 使用

项目在构建时你可能需要注意的

  1. 项目构建
    如果项目不确定是否有子模块或者相关模块依赖关系,在创建项目时,最好构建父模块进行管理,但是父模块不要配置parent.

  2. 父子模块打包
    项目在打包时,在父模块进行package,如果在子模块进行package可能会出现子模块不是最新的情况或者不存在的情况 (因为只有在父模块package的时候,他会处理依赖关系,不需要其他模块install)

  3. mvn compile与mvn install、mvn deploy的区别
    mvn compile,编译类文件
    mvn install,包含mvn compile,mvn package,然后上传到本地仓库
    mvn deploy,包含mvn install,然后,上传到私服

  4. 如果没有maven 如何把java项目打包成jar包
    方法一: 我记得在大学中的第一个jar包是 Eclipse中的Export jar file
    方法二: 在IDEA 中的 Project Structure -> Artifacts 新建jar 并添加相关依赖

  5. 详解一个fat-jar(spring-boot-jar)包

    1. 为什么有这块呢?可能你在使用打包工具 上述两种 or maven package后 找不到main class 时,可以通过jar包的目录结构及相关文件进行分析定位。
    2. BOOT-INF 包含lib和classes 一个是依赖,另一个是源码.(但是有些项目会把lib提取出来,打包的时候减少fat-jar体积,可能会没有classes)
    3. META-INF 包括MAINFEST.MF 和maven (启动信息 和 maven)
    4. 最主要的是Main-Class
  6. spring boot plugin 插件配置项详解 它的configuration可以配置哪些参数

spring boot maven plugin Guide

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
  1. maven profile 如何优雅使用

可以通过maven profile 区分配置,可以区分jdk版本,仓库地址等功能

  1. spring boot maven wrapper 是什么? 如何使用

mvnw文件适用于Linux(bash),mvnw.cmd适用于Windows 环境。

作用:Maven Wrapper更简单确保Maven构建的用户拥有运行Maven构建所需的一切。Maven对于用户来说非常稳定,但是随着Maven变化,用户将更容易拥有项目提供的完全封装的构建设置。Maven Wrapper更容易做到,这是从Gradle借来的好主意。

  1. maven常见插件 具体如何使用 resouces copy 打包本地依赖 grpc编译插件

link 文章末尾 grpc配置

  1. 子模块有systemPath,其他模块进行package时 依赖不进去子模块的systemPath 那他的流程是什么 root模块打包时可以的。

在spring boot maven plugin中配置

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
  1. spring boot 项目 使用外部化classpath 抽离固定依赖包
    mvn dependency:copy-dependencies -DoutputDirectory=lib
    -Dloader.path=dependency
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                    <layout>ZIP</layout>
                </configuration>
            </plugin>
  1. spring boot 项目 linux下以服务启动

将SpringBoot 打包可执行Jar 并配置成Linux 系统服务

  1. spring boot 项目 windows服务

如何将Spring Boot项目部署为Windows服务,并设置开机启动

  1. Idea maven 无法下载源码

使用 maven 3.5.4 试下,一直在用哦

grpc配置


 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <grpc.version>1.22.1</grpc.version>
        <protobuf.version>3.7.1</protobuf.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <version>${grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>${grpc.version}</version>
        </dependency>

        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>${grpc.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>${protobuf.version}</version>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.5.0.Final</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.5.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
                    </protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
                    </pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>