Anil Bhendarkar
Anil Bhendarkar

Reputation: 51

Maven project creation with local repository and local dependencies

Problem : pom.xml shows error as missing artifact. I have created the project with local repository and inside that i copied required jar files. I tried to create the project dynamically like just putting required jar name and version in pom.xml but it was unable to find it like poi jar etc.

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>

` Local Repository:Jar file present in local repository {shown few jar files} Jarfileinformation present in local repository Effective 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>

I don't understand the problem. My aim is to create maven project with this library as dependencies.

Thanks

Upvotes: 2

Views: 16430

Answers (3)

cb4
cb4

Reputation: 9383

In a modern IDE, there's no need to mess with the command-line. In intellij, I created one run configuration, then copied and modified it for each additional jar (I had over 20). Enter something like this in the Run text box:

install:install-file -Dfile=poi.jar -DgroupId=poi -DartifactId=poi -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

Select the correct Working directory where your jar is, save, and run. To keep my Run/Debug Configurations menu uncluttered, I put them all in a folder (click the dropdown, then Edit Configurations, then this iconfolder).

Upvotes: 0

Mikhail Valuyskiy
Mikhail Valuyskiy

Reputation: 1298

By the way, for Android projects if you need to add it to the repo (for example in order to build your app at CI) you need replace

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

by

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

at your top-level build.gradle file

Upvotes: 0

Sheel
Sheel

Reputation: 1030

For adding local jar as your dependencies, there are two way to achieve this.

1) Use scope system

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

But using this way some maven building tools failed due to scope system, like maven-assembly-plugin and maven-shade-plugin. To avoid this use following way.

2) By creating local repository,

Create directory repo in your project directory. Run following maven command to install jar to local repository,

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

Run mvn deploy command in project folder via cmd. If mvn is not installed in your machine then use following links for same.

Install Maven in Windows

Install Maven in Ubuntu/UNIX

And add local repository entry pom.xml.

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

Finally add your dependency,

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

This dependency will use jar from your local repo created in project folder.

Upvotes: 6

Related Questions