maven 項目加載本地JAR
阿新 • • 發佈:2018-03-14
post ips pil 版本 project 隨著 netty aspectj pac
將jar安裝到本地的maven倉庫
1.首先確定本地有maven環境。
2.安裝本地jar
模板: mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 示例: mvn install:install-file -Dfile=F:\jave-ffmpegjave-1.0.2.jar -DgroupId=ffmpegjave -DartifactId=java-ffmpegjave -Dversion=1.0.2 -Dpackaging=jar
<path-to-file>: 要安裝的JAR的本地路徑 <group-id>:要安裝的JAR的Group Id <artifact-id>: 要安裝的JAR的 Artificial Id <version>: JAR 版本 <packaging>: 打包類型,例如JAR
註意:最好在pom.xml
文件所在的目錄運行上述命令,個人經驗不在根目錄運行有時會安裝不成功
如圖出現SUCCESS就表示安裝成功。
3.引用jar
找到安裝的pom,打開復制引用
如:
<dependency> <groupId>ffmpegjave</groupId> <artifactId>java-ffmpegjave</artifactId> <version>1.0.2</version> </dependency>
這種方法弊端較大,程序的可維護性以及移植性較低。例如當你改變本地Maven倉庫時需要重新安裝。如果引用此JAR
的項目是多人協調工作的項目,則每個人都要將其安裝在自己的本地倉庫。
解決辦法
可以將此JAR
文件放在工程的根目錄下,讓其隨著項目走,然後在pom.xml
文件中使用maven-install-plugin在Maven初始化階段完成安裝。
如圖
<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> <parent> <groupId>com.watch.parent</groupId> <artifactId>children-watch-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <!-- 公共項目 --> <groupId>com.watch.commons</groupId> <artifactId>children-watch-commons</artifactId> <version>0.0.1-SNAPSHOT</version> <name>children-watch-commons</name> <url>http://maven.apache.org</url> <dependencies> <!-- amr錄音轉換為mp3 --> <dependency> <groupId>ffmpegjave</groupId> <artifactId>java-ffmpegjave</artifactId> <version>1.0.2</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.5</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>install-file</goal> </goals> <configuration> <groupId>ffmpegjave</groupId> <artifactId>java-ffmpegjave</artifactId> <version>1.0.2</version> <packaging>jar</packaging> <file>${basedir}/lib/java-ffmpegjave-1.0.2.jar</file> </configuration> </execution> </executions> </plugin> <!--如果使用Eclipse報錯的話,加入如下代碼--> <!--This plugin‘s configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <versionRange>[1.0,)</versionRange> <goals> <goal>test-compile</goal> <goal>compile</goal> </goals> </pluginExecutionFilter> <action> <execute /> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-install-plugin </artifactId> <versionRange> [2.5,) </versionRange> <goals> <goal>install-file</goal> </goals> </pluginExecutionFilter> <action> <execute> <runOnIncremental>false</runOnIncremental> </execute> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
SpringBoot
的配置
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <phase>initialize</phase> <goals> <goal>install-file</goal> </goals> <configuration> <groupId>ffmpegjave</groupId> <artifactId>java-ffmpegjave</artifactId> <version>1.0.2</version> <packaging>jar</packaging> <file>${basedir}/lib/java-ffmpegjave-1.0.2.jar</file> </configuration> </execution> </executions> </plugin>
${basedir}
表示pom.xml
文件所在的目錄
然後打包測試看是否能引用到。如圖
我這裏是聚合工程,jar是在公共項目中引用的,我netty項目要用到只需要引用公共項目就可以了,jar也會一起引用過來的。
maven 項目加載本地JAR