Reputation: 1079
I have spring maven project in eclipse called abc-caller. I need to create a jar of the project. The project depends on abc-lt-core. I don't have any control on this dependency
<dependency>
<groupId>com.abc.lt</groupId>
<artifactId>abc-lt-core</artifactId>
<version>5.1.4</version>
</dependency>
POM of abc-caller
<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.abc</groupId>
<artifactId>abc-caller</artifactId>
<version>1.0</version>
<name>caller</name>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>*.*</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>Caller</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.abc.Caller</Main-Class>
<Build-Number>1</Build-Number>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.abc.lt</groupId>
<artifactId>abc-lt-core</artifactId>
<version>5.1.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jmx</artifactId>
<version>2.0.8</version>
</dependency>
</dependencies>
</project>
On buildind the maven project I am getting the following error
Downloading: http://repo.maven.apache.org/maven2/com/abc/lt/abc-lt/${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom
Downloading: http://repo.opengeo.org/com/abc/lt/abc-lt/${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom
Downloading: http://www.hibernatespatial.org/repository/com/abc/lt/abc-lt/${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom
Downloading: http://repo1.maven.org/maven2/com/abc/lt/abc-lt/${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom
---------
BUILD FAILURE
-----------------
Failed to execute goal on project abc-lt-caller: Could not resolve dependencies for project com.abc:abc-lt-caller:jar:1.0:
Failed to collect dependencies for [org.apache.activemq:activemq-all:jar:5.8.0 (compile),
org.apache.activemq:activemq-pool:jar:5.8.0 (compile), org.springframework:spring-jms:jar:3.2.4.RELEASE (compile),
com.abc.lt:abc-lt-core:jar:5.1.4 (compile), org.springframework:spring-core:jar:3.2.4.RELEASE (compile),
org.springframework:spring-jmx:jar:2.0.8 (compile)]:
Failed to read artifact descriptor for com.abc.lt:abc-lt-core:jar:5.1.4:
Could not transfer artifact com.abc.lt:abc-lt:pom:${masterVersionNumber}
from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 71:
http://repo.maven.apache.org/maven2/com/abc/lt/abc-lt/
${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom -> [Help 1]
Upvotes: 2
Views: 1241
Reputation: 8323
Your problem isn't with your project, it seems to be with the POM of the dependent project.
The error you are getting is telling you there's an illegal character on the URL/path that is preventing Maven from resolving the dependency.
Failed to read artifact descriptor for com.abc.lt:abc-lt-core:jar:5.1.4: Could not transfer artifact com.abc.lt:abc-lt:pom:${masterVersionNumber} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 71: http://repo.maven.apache.org/maven2/com/abc/lt/abc-lt/ ${masterVersionNumber}/abc-lt-${masterVersionNumber}.pom -> [Help 1]
See the bold text. It's not resolving the ${masterVersionNumber} property. I suspect it's a problem on the deployment.
If you don't have control over it, can you download the JAR manually and install it to your local m2 repo and build that way? That should allow you to get by until it's fixed.
Upvotes: 1
Reputation: 354
If you need create a jar with dependences you could using the single goal of maven-assembly-plugin.
...
<build>
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>MAIN_CLASS</mainClass>
</manifest>
</archive>
<!-- <finalName>JAR_NAME/finalName> -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...
</build>
...
This plugin is added to packaging phase of the lifecicle of maven (<phase>package</phase>
). The jar-with-dependencies generates an only jar which contains all the dependencies.
Upvotes: 0