1. 程式人生 > >maven 項目加載本地JAR

maven 項目加載本地JAR

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 plugins 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