从依赖于其他项目的maven项目构建jar

我在eclipse中有一个名为abc-caller的spring maven项目。 我需要创建一个项目的jar。 该项目取决于abc-lt-core。 我对这种依赖关系没有任何控制权

 com.abc.lt abc-lt-core 5.1.4  

abc-call的POM

  4.0.0 com.abc abc-caller 1.0 caller    src/main/resources  *.*  false   install   org.apache.maven.plugins maven-shade-plugin   package  shade   Caller    com.abc.Caller 1         org.apache.maven.plugins maven-compiler-plugin 3.1  1.7 1.7       org.apache.activemq activemq-all 5.8.0   org.apache.activemq activemq-pool 5.8.0   org.springframework spring-jms 3.2.4.RELEASE   com.abc.lt abc-lt-core 5.1.4   org.springframework spring-core 3.2.4.RELEASE   org.springframework spring-jmx 2.0.8    

在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] 

您的问题不在于您的项目,它似乎与依赖项目的POM有关。

您收到的错误告诉您,URL /路径上存在阻止Maven解析依赖关系的非法字符。

无法读取com.abc.lt:abc-lt-core:jar:5.1.4的工件描述符:无法将工件com.abc.lt:abc-lt:pom:${masterVersionNumber}从/向中央传输( http ://repo.maven.apache.org/maven2 ): 索引71处路径中的非法字符: http: //repo.maven.apache.org/maven2/com/abc/lt/abc-lt/ $ {masterVersionNumber} /abc-lt-${masterVersionNumber}.pom – > [帮助1]

见粗体文字。 它没有解析$ {masterVersionNumber}属性。 我怀疑这是部署的问题。

如果您无法控制它,是否可以手动下载JAR并将其安装到本地m2 repo并以此方式构建? 这应该允许你通过,直到它被修复。

如果你需要创建一个具有依赖性的jar,你可以使用maven-assembly-plugin的单个目标。

 ...  ...  maven-assembly-plugin    MAIN_CLASS     jar-with-dependencies     make-assembly package  single     ...  ... 

这个插件被添加到maven的生命周期的包装阶段( package )。 jar-with-dependencies生成一个包含所有依赖项的jar。