我在eclipse中有一个名为abc-caller的spring maven项目。我需要创建一个项目的jar。该项目取决于abc-lt-core。我对这种依赖关系没有任何控制权
<dependency>
<groupId>com.abc.lt</groupId>
<artifactId>abc-lt-core</artifactId>
<version>5.1.4</version>
</dependency>
abc-caller的POM
<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>
在buildind maven项目中我收到以下错误
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]
答案 0 :(得分:1)
您的问题与您的项目无关,似乎与依赖项目的POM有关。
您收到的错误告诉您,网址/路径上存在阻止Maven解析依赖关系的非法字符。
无法读取工件描述符 com.abc.lt:abc-lt-core:jar:5.1.4:无法传输工件 com.abc.lt:abc-lt:pom:${masterVersionNumber} from / to central (http://repo.maven.apache.org/maven2):路径中的非法角色 索引71: http://repo.maven.apache.org/maven2/com/abc/lt/abc-lt/ $ {masterVersionNumber} / abc-lt - $ {masterVersionNumber} .pom - &gt; [帮助1]
请参阅粗体文字。它没有解析$ {masterVersionNumber}属性。我怀疑这是部署的问题。
如果您无法控制它,可以手动下载JAR并将其安装到您当地的m2 repo并以此方式构建吗?这应该允许你过去直到它被修复。
答案 1 :(得分:0)
如果你需要创建一个具有依赖性的jar,你可以使用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>
...
此插件已添加到maven(<phase>package</phase>
)生命周期的包装阶段。 jar-with-dependencies生成一个包含所有依赖项的jar。