我正在尝试在Heroku上关注“向Maven项目添加非托管依赖项”文章,以向Java项目添加本地JAR依赖项。 我一直卡在Update Pom文件部分,它告诉我添加/更新存储库元素。 我将示例存储库元素添加到我的pom.xml文件中,当我尝试将代码推送到heroku时,我收到以下错误:
无法在项目fuji上执行目标:无法解析项目com.example.fuji的依赖项:fuji:jar:1.0-SNAPSHOT:找不到工件com.example.tambora:Tambora:jar:0.0.1-SNAPSHOT在project.local
中
似乎我将存储库ID或名称元素命名为错误,但我无法弄清楚它们应该更改的内容。 我能够在本地运行此应用程序而不会收到任何错误。
继承我的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.fuji</groupId>
<artifactId>fuji</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Fuji</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.example.tambora</groupId>
<artifactId>Tambora</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>7.0.22</version>
</dependency>
</dependencies>
<build>
<finalName>fuji</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<assembleDirectory>target</assembleDirectory>
<programs>
<program>
<mainClass>launch.Main</mainClass>
<name>webapp</name>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<!--other repositories if any-->
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
</project>
答案 0 :(得分:2)
这可能是因为com.example.tambora:Tambora:jar:0.0.1-SNAPSHOT
是SNAPSHOT,但尚未为您的自定义存储库启用SNAPSHOT。根据{{3}},这是必需的:
作为默认设置,Maven不会检查远程存储库上的SNAPSHOT版本。要依赖SNAPSHOT版本,用户必须明确启用使用POM中的存储库或pluginRepository元素下载快照的功能。
你应该能够像Maven: The Complete Reference:
那样<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
<snapshots>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
此外,在本地进行故障排除时,我建议删除您的~/.m2/repo/com/example/tambora
目录,因为可能发生的是Maven在您的本地仓库中找到JAR而不是项目中嵌入的JAR。