maven 从pom.xml 下载jar包

文章目录

打包会有问题

root lib-A

当前是需要直接打root的jar包,但是lib包下面有直接引用的本地jar并不在maven仓库当中使用如下

格式如下:

1
2
3
4
5
6
7
<dependency>
<groupId>com.shentong</groupId>
<artifactId>pinyinAnalyzer</artifactId>
<version>4.3.1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/src/main/resources/lib/pinyinAnalyzer4.3.1.jar</systemPath>
</dependency>

打包中如果有测试代码编译不通过的可用参考添加

1
2
3
4
5
6
7
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>

我后面发现打的jar包lib文件夹下面的确是有lib-A项目,但是啊就是跑的后面一旦涉及引用lib-A下面的本地第三方jar就说类找不到网上有人给出如下解决方案

1
2
3
4
5
6
7
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>

我分别在lib-A和root项目下添加了,神奇的事发生了,打包的后服务可以运行,但是lib-A下面的controller全都没有,对应的请求都是404,人都快裂开了

只能排除法先注释root下发现不行,后面注释lib-A下居然成功了,真TMD邪门

补充maven install 包含外部jar的打包情况——-

参考链接

在maven的pom文件中引用本地的jar

1
2
3
4
5
6
7
8
        <dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/src/main/resources/lib/pinyin4j-2.5.0.jar</systemPath>-->
<systemPath>${pom.basedir}/src/main/resources/lib/pinyin4j-2.5.1.jar</systemPath>
</dependency>

但是打包时会报错

should not point at files within the project directory dependencies.dependency.systemPath

在stackoverflow上有两种方式

第一种是pom中添加jar所在文件夹的仓库

1
2
3
4
5
6
7
<repositories>
<repository>
<id>localrepository</id>
<url>file://${project.basedir}/src/main/resources/lib</url>
</repository>

</repositories>

但是在打包的时候还是会出问题

第二种使用plugin来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<phase>compile</phase>
<!-- <goals>
<goal>copy-dependencies</goal>
</goals>-->
<configuration>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
<packaging>jar</packaging>
<file>${pom.basedir}/src/main/resources/lib/pinyinAnalyzer4.3.1.jar</file>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

tips 下面的两种尝试过失败也列出来

  1. 使用configuration复制来自于网络和正确的配置有出入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <execution>
    <id>pinyin4j</id>
    <phase>compile</phase>
    <configuration>
    <file>${pom.basedir}/src/main/resources/lib/pinyin4j-2.5.0.jar</file>
    <repositoryLayout>default</repositoryLayout>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.0</version>
    <packaging>jar</packaging>
    <generatePom>true</generatePom>
    </configuration>
    <goals>
    <goal>pinyin4j</goal>
    </goals>
    </execution>
  1. 使用clean

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <execution>
    <id>pinyinAnalyzer</id>
    <phase>clean</phase>
    <configuration>
    <file>${pom.basedir}/src/main/resources/lib/pinyinAnalyzer4.3.1.jar</file>
    <repositoryLayout>default</repositoryLayout>
    <groupId>com.shentong</groupId>
    <artifactId>pinyinAnalyzer</artifactId>
    <version>4.3.1</version>
    <packaging>jar</packaging>
    <generatePom>true</generatePom>
    </configuration>
    <goals>
    <goal>install-file</goal>
    </goals>
    </execution>
  1. 使用phase>init</phase

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <execution>
    <id>pinyinAnalyzer</id>
    <phase>init</phase>
    <configuration>
    <file>${pom.basedir}/src/main/resources/lib/pinyinAnalyzer4.3.1.jar</file>
    <repositoryLayout>default</repositoryLayout>
    <groupId>com.shentong</groupId>
    <artifactId>pinyinAnalyzer</artifactId>
    <version>4.3.1</version>
    <packaging>jar</packaging>
    <generatePom>true</generatePom>
    hconfiguration>
    <goals>
    <goal>install-file</goal>
    </goals>
    </execution>

之前一直用IntelliJ IDEA 的直接下载jar包,但是这次一直下载不下来指定版本jar包,看本地的代码库localRepository本地没有,看本地部署的maven中心,所以使用了参考地址

  1. 创建pom.xml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<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>Spider</groupId>
<artifactId>Spider</artifactId>
<version>1.0</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
  1. 使用mvn命令 下载后在本地仓库看到, 然后在IntelliJ IDEA刷新
1
mvn dependency:copy-dependencies