使用本地存储库和本地依赖项创建Maven项目

时间:2016-07-11 08:02:29

标签: maven project

问题:pom.xml显示错误为缺失工件。            我用本地存储库创建了项目,在里面我复制了所需的jar文件。 我试图动态创建项目,就像在pom.xml中放入必需的jar名称和版本一样,但它无法像poi jar等那样找到它。

的pom.xml `

<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>com.mavenproject.test</groupId>
  <artifactId>testproject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>testproject</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
<repositories>
      <repository>
         <id>localrepository</id>
         <url>C:/Users/anil/.m2/repository</url>
      </repository>
   </repositories>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
     <dependency>
         <groupId>commons-beanutils</groupId>
         <artifactId>commons-beanutils</artifactId>
      </dependency>
     <dependency>
         <groupId>commons-collections</groupId>
         <artifactId>commons-collections</artifactId>
      </dependency>
      <dependency>
         <groupId>commons-logging</groupId>
         <artifactId>commons-logging</artifactId>
      </dependency>
    <dependency>
         <groupId>commons-digester</groupId>
         <artifactId>commons-digester</artifactId>
      </dependency>
       <dependency>
         <groupId>itext</groupId>
         <artifactId>itext</artifactId>
      </dependency>
       <dependency>
         <groupId>jasperreports</groupId>
         <artifactId>jasperreports</artifactId>
      </dependency>
      <dependency>
         <groupId>poi</groupId>
         <artifactId>poi</artifactId>
      </dependency>
  </dependencies>
</project>

` 本地存储库:存储在本地存储库中的Jar文件{显示几个jar文件} Jarfileinformation present in local repository 有效的POM:

 <?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mavenproject.test</groupId>
  <artifactId>testproject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>testproject</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.0</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
      </dependency>
      <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>2.1</version>
      </dependency>
      <dependency>
        <groupId>itext</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
      </dependency>
      <dependency>
        <groupId>jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.2.2</version>
      </dependency>
      <dependency>
        <groupId>poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10.1</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-digester</groupId>
      <artifactId>commons-digester</artifactId>
      <version>2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>itext</groupId>
      <artifactId>itext</artifactId>
      <version>2.1.7</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>jasperreports</groupId>
      <artifactId>jasperreports</artifactId>
      <version>6.2.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.10.1</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>localrepository</id>
      <url>C:/Users/anil/.m2/repository</url>
    </repository>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </pluginRepository>
  </pluginRepositories>
  <build>
    <sourceDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\src\main\java</sourceDirectory>
    <scriptSourceDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\src\main\scripts</scriptSourceDirectory>
    <testSourceDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\src\test\java</testSourceDirectory>
    <outputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\classes</outputDirectory>
    <testOutputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\test-classes</testOutputDirectory>
    <resources>
      <resource>
        <directory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\src\main\resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\src\test\resources</directory>
      </testResource>
    </testResources>
    <directory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target</directory>
    <finalName>testproject-0.0.1-SNAPSHOT</finalName>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.2-beta-5</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.3.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.5</version>
        <executions>
          <execution>
            <id>default-clean</id>
            <phase>clean</phase>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>default-install</id>
            <phase>install</phase>
            <goals>
              <goal>install</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>default-resources</id>
            <phase>process-resources</phase>
            <goals>
              <goal>resources</goal>
            </goals>
          </execution>
          <execution>
            <id>default-testResources</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>testResources</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.4</version>
        <executions>
          <execution>
            <id>default-test</id>
            <phase>test</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <executions>
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
          <execution>
            <id>default-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>default-jar</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>default-deploy</id>
            <phase>deploy</phase>
            <goals>
              <goal>deploy</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <executions>
          <execution>
            <id>default-site</id>
            <phase>site</phase>
            <goals>
              <goal>site</goal>
            </goals>
            <configuration>
              <outputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\site</outputDirectory>
              <reportPlugins>
                <reportPlugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-project-info-reports-plugin</artifactId>
                </reportPlugin>
              </reportPlugins>
            </configuration>
          </execution>
          <execution>
            <id>default-deploy</id>
            <phase>site-deploy</phase>
            <goals>
              <goal>deploy</goal>
            </goals>
            <configuration>
              <outputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\site</outputDirectory>
              <reportPlugins>
                <reportPlugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-project-info-reports-plugin</artifactId>
                </reportPlugin>
              </reportPlugins>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <outputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\site</outputDirectory>
          <reportPlugins>
            <reportPlugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-project-info-reports-plugin</artifactId>
            </reportPlugin>
          </reportPlugins>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <outputDirectory>D:\Anil Bhendarkar\Company Projects\Rolls-Royce\Workspace\testproject\target\site</outputDirectory>
  </reporting>
</project>

我不明白这个问题。 我的目标是使用此库作为依赖项创建maven项目。

由于

2 个答案:

答案 0 :(得分:2)

要添加本地jar作为依赖项,有两种方法可以实现此目的。

1)使用范围 system

<dependency>
    <groupId>poi</groupId>
    <artifactId>poi</artifactId>
    <version>1.0</version> <!-- Dummy Version -->
    <scope>system</scope>
    <systemPath>/pathToJar/poi.jar</systemPath>
</dependency>

但是使用这种方式,一些 maven构建工具由于范围system 而失败,例如maven-assembly-pluginmaven-shade-plugin。为了避免这种使用方式。

2)通过创建本地存储库,

在项目目录中创建目录repo。 运行以下maven命令将jar安装到本地存储库,

mvn deploy:deploy-file -Durl=file:///path/toyourproject/repo/ -Dfile=/pathToJar/poi.jar -DgroupId=poi -DartifactId=poi -Dpackaging=jar -Dversion=1.0

通过cmd在项目文件夹中运行mvn deploy命令。如果您的计算机中未安装mvn,请使用以下链接。

Install Maven in Windows

Install Maven in Ubuntu/UNIX

添加本地存储库条目pom.xml。

<repositories>
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>

最后添加您的依赖项

<dependency>
     <groupId>poi</groupId>
     <artifactId>poi</artifactId>
     <version>1.0</version>
</dependency>

此依赖项将使用在项目文件夹中创建的本地仓库中的jar。

答案 1 :(得分:0)

顺便说一句,对于 Android项目,如果您需要将其添加到存储库中(例如为了在CI上构建应用程序),则需要替换

allprojects {
    repositories {
        google()
        mavenLocal()
    }
}

作者

allprojects {
    repositories {
        google()
        maven {
            url rootProject.projectDir.path + "/common_libs"
        }
    }
}

位于顶级build.gradle文件中