添加依赖
如果需要给项目添加依赖,只需要在pom.xml的<dependencies>
节点下添加相关依赖就可以。
1 2 3 4 5 6 7 8 |
<dependencies> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.24.0-GA</version> </dependency> </dependencies> |
scope 值有 compile、provided、runtime、system、test、import。默认为compile。
provided
对于开始时需要的依赖,而在运行时运行环境已经提供了的依赖,就需要额外的指定scope为provided。这样在打包时就不会把依赖打包在内。
1 2 3 4 5 6 7 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> |
runtime
在运行的时候才会依赖,在编译的时候不会依赖。比较典型的场景是JDBC driver 和 DataSource 连接池。开发的时候没办法直接调用相关的类但是运行的时候又存在。
1 2 3 4 5 6 7 |
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> <scope>runtime</scope> </dependency> |
system
有些jar包,nexus 公共库没有,而我们由于各种原因不想使用私服,我们可以指定scope为system, 然后配合systemPath指定jar位置。
1 2 3 4 5 6 7 8 |
<dependency> <groupId>org.xobo.local</groupId> <artifactId>myartifact</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/myartifact_1.0.0.jar</systemPath> </dependency> |
project.basedir 表示项目根目录,即包含pom.xml文件的目录。 还有一个更老的写法basedir 已经被标记为弃用了。
Maven Model Builder – Introduction
https://maven.apache.org/ref/3-LATEST/maven-model-builder/index.html
test
在测试范围有效,在编译与打包的时候都不会使用这个依赖。
1 2 3 4 5 6 7 |
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> |
管理版本依赖
使用 dependencyManagement 管理Jar包版本。dependencyManagement
只是一个针对依赖的声明,并不真正的添加依赖。等真正添加依赖时,可以为这些依赖的某些属性提供默认值,比如版本号。
Java项目中三方Jar包非常的丰富,丰富的同时带来了依赖的混乱,通过 dependencyManagement 可以快速的统一 Jar 包版本。
以 javassist 为例,项目中依赖多个 javassist 版本。
在 pom.xml 增加以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<dependencies> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.24.0-GA</version> </dependency> </dependencies> </dependencyManagement> |
这个时候 javassist 就会被统一成 3.24.0-GA 版本了,但是还有一个漏网之鱼。
这是因为 javassist 从 3.13.x 开始变了 groupId。 我们需要单独排除这个依赖。
这样 javassist 的版本就彻底的统一了。
生成 source 和 doc
1 2 |
mvn source:jar |
如果希望在 package install 或 deploy时自动生成.需要给 pom.xml 的 repositories 节点添加如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> |
本地 jar 包
0x01. 上传至 Maven 私服(nexus)。
0x02. 创建项目内 Maven 库。
1 给 pom.xml 的 repositories 节点添加如下配置:
1 2 3 4 5 |
<repository> <id>project</id> <url>file://${project.basedir}/repo</url> </repository> |
2 执行如下命令
1 2 3 4 |
mvn install:install-file -DlocalRepositoryPath=repo -DcreateChecksum=true \ -Dpackaging=jar -Dfile=[your-jar] -DgroupId=[...] \ -DartifactId=[...] -Dversion=[...] |
也可以使用该脚本自动解析 jar 包名称并安装到项目 repo
install-to-project-repo
指定 JDK 版本
可以通过属性配置
1 2 3 4 5 6 |
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> |
也可以给 pom.xml 的 build 节点添加如下配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> |
最终版pom.xml
pom 的依赖是一棵树,单纯看一个pom.xml什么也看不出来这个时候我们就需要打印出依赖树:
1 2 |
mvn dependency:tree |
pom.xml不仅仅是依赖,还是涉及到各个配置之间的继承覆盖,这个时候就需要查看最终的pom.xml, 在pom.xml所在的目录执行命令:
1 2 |
mvn help:effective-pom |
这样就可以输出一个完整的 pom.xml。
如果希望能输出到一个xml文件里:
1 2 |
mvn help:effective-pom -Doutput=all.xml |
pom.xml 片段
My pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
<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 统一为域名倒序, 可以加子域但不要自创域名。 --> <groupId>org.xobo</groupId> <artifactId>maven-pom-sample</artifactId> <version>0.0.1-SNAPSHOT</version> <name>maven-pom-sample</name> <url>http://www.ezhiyang.com</url> <properties> <!-- 统一属性, 可根据实际情况修改 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <!-- jar包版本属性, 属性值建议命名为 artifactId.version --> <commons-dubbo-api.version>0.0.11-SNAPSHOT</commons-dubbo-api.version> <sendcloud-sdk.version>1.0.0</sendcloud-sdk.version> </properties> <dependencies> <dependency> <groupId>org.xobo.3rd</groupId> <artifactId>sendcloud-sdk</artifactId> </dependency> <dependency> <groupId>org.xobo</groupId> <artifactId>commons-dubbo-api</artifactId> </dependency> </dependencies> <!-- 使用 dependencyManagement 统一项目 jar 包版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.xobo</groupId> <artifactId>commons-dubbo-api</artifactId> <version>${commons-dubbo-api.version}</version> </dependency> <!-- 手动上传至 nexus 的 jar 包,groupId 固定为 org.xobo.3rd --> <dependency> <groupId>org.xobo.3rd</groupId> <artifactId>sendcloud-sdk</artifactId> <version>${sendcloud-sdk.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <resources> <!-- 打包的时候把 xml 等文件打入 jar 包, 可根据实际项目需要增删条目 --> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.html</include> <include>**/*.xsd</include> <include>**/*.schemas</include> <include>**/*.handlers</include> <include>**/*.properties</include> <include>**/*.png</include> <include>**/*.jpg</include> <include>**/*.gif</include> <include>**/*.css</include> <include>**/*.js</include> <include>**/*.bpmn</include> <include>**/*.bpmn2</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.html</include> <include>**/*.xsd</include> <include>**/*.schemas</include> <include>**/*.handlers</include> <include>**/*.properties</include> <include>**/*.png</include> <include>**/*.jpg</include> <include>**/*.gif</include> <include>**/*.css</include> <include>**/*.js</include> <include>**/*.bpmn</include> <include>**/*.bpmn2</include> </includes> </resource> </resources> </build> <!-- 使用私有 nexus 服务器, 根据实际情况修改或删除 --> <repositories> <repository> <id>ezhiyang</id> <url>http://localhost:8081/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>ezhiyang</id> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> <distributionManagement> <repository> <id>ezhiyang-deployment</id> <url>http://localhost:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>ezhiyang-deployment</id> <url>http://localhost:8081/nexus/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement> </project> |
最新评论
昨天发现的,然后在application.yml中配置“hibernate.dialect.storage_engine=innodb”。但是自动生成的表还是不会设置为innoDB,看了底层源码。这个配置也是没有加载到的 原来是要在hibernate.properties中加这个配置。感谢
将virtualbox虚拟网卡驱动卸载了,然后就会好了,但是这个时候virtualbox虚拟网络就无法使用了,重新安装一下virtualbox就好了
我也发现了这个注释:注释“Use "hibernate.dialect.storage_engine=innodb" environment variable or JVM system property instead.” ----- 坑啊。。。。。。。
卸载蓝牙驱动·在设备里面找,一般在网卡那里 卸载重启就行了
高