maven liquibase 插件找不到 jitpack 依赖
maven liquibase plugin does not find jitpack dependency
我有一个很奇怪的问题。前段时间fork了liquibase-hibernate
,因为找到了一个bug解决了。
当这个 pull request 被接受时,我将我的 liquibase-hibernate4
插件部署到本地工件中,一切正常。
但是现在问题来了。我必须在一个项目中使用这个依赖项,我不能使用我的本地工件。所以我这样使用 JitPack 存储库:
在 pom.xml
存储库中添加了 JitPack:
<repositories>
...
<repository>
<id>jitpack.io</id>
<url>http://jitpack.io</url>
</repository>
...
</repositories>
然后添加依赖:
...
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.github.malaguna</groupId>
<artifactId>liquibase-hibernate</artifactId>
<version>liquibase-hibernate4-3.6.1</version>
</dependency>
I 运行 mvn compile
或 mvn package
并且效果很好。但我也配置了 maven-liquibase-plugin
并在内部包含相同的依赖项,因为其他方式插件不起作用。
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<propertyFile>target/classes/liquibase.properties</propertyFile>
</configuration>
<dependencies>
<dependency>
<groupId>com.github.malaguna</groupId>
<artifactId>liquibase-hibernate</artifactId>
<version>liquibase-hibernate4-3.6.1</version>
</dependency>
....
现在,当我 运行 mvn resources:resources liquibase:diff
我可以看到 maven 如何尝试从 maven central 获取我的 liquibase-hibernate 工件:
[INFO] --- liquibase-maven-plugin:3.4.1:diff (default-cli) @ project ---
Downloading: http://repo.maven.apache.org/maven2/com/github/malaguna/liquibase-hibernate/liquibase-hibernate4-3.6.1/liquibase-hibernate-liquibase-hibernate4-3.6.1.jar
...
然后就失败了
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:diff
(default-cli) on project xxxxx: Execution default-cli of goal
org.liquibase:liquibase-maven-plugin:3.4.1:diff failed:
Plugin org.liquibase:liquibase-maven-plugin:3.4.1 or one of its
dependencies could not be resolved: Could not find artifact
com.github.malaguna:liquibase-hibernate:jar:liquibase-hibernate4-3.6.1 in central
(http://repo.maven.apache.org/maven2) -> [Help 1]
为什么当从 maven-liquibase-plugin 调用时,maven 试图从 maven central 下载工件,而不是 jitpack?我怎样才能避免这种情况?
如我之前所述,运行编译或打包时效果很好,工件已下载。
Maven 区分工件存储库和插件存储库,参见Repositories and Plugin_Repositories。所以在你的情况下你必须提供
<pluginRepositories>
<pluginRepository>
<id>jitpack.io</id>
<url>http://jitpack.io</url>
</pluginRepository>
</pluginRepositories>
插件的依赖是通过
定义的
<plugin>
<dependencies>
<dependency>
....
</dependency>
</dependencies>
</plugin>
正如您已经注意到的那样。
我有一个很奇怪的问题。前段时间fork了liquibase-hibernate
,因为找到了一个bug解决了。
当这个 pull request 被接受时,我将我的 liquibase-hibernate4
插件部署到本地工件中,一切正常。
但是现在问题来了。我必须在一个项目中使用这个依赖项,我不能使用我的本地工件。所以我这样使用 JitPack 存储库:
在 pom.xml
存储库中添加了 JitPack:
<repositories>
...
<repository>
<id>jitpack.io</id>
<url>http://jitpack.io</url>
</repository>
...
</repositories>
然后添加依赖:
...
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.github.malaguna</groupId>
<artifactId>liquibase-hibernate</artifactId>
<version>liquibase-hibernate4-3.6.1</version>
</dependency>
I 运行 mvn compile
或 mvn package
并且效果很好。但我也配置了 maven-liquibase-plugin
并在内部包含相同的依赖项,因为其他方式插件不起作用。
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<propertyFile>target/classes/liquibase.properties</propertyFile>
</configuration>
<dependencies>
<dependency>
<groupId>com.github.malaguna</groupId>
<artifactId>liquibase-hibernate</artifactId>
<version>liquibase-hibernate4-3.6.1</version>
</dependency>
....
现在,当我 运行 mvn resources:resources liquibase:diff
我可以看到 maven 如何尝试从 maven central 获取我的 liquibase-hibernate 工件:
[INFO] --- liquibase-maven-plugin:3.4.1:diff (default-cli) @ project ---
Downloading: http://repo.maven.apache.org/maven2/com/github/malaguna/liquibase-hibernate/liquibase-hibernate4-3.6.1/liquibase-hibernate-liquibase-hibernate4-3.6.1.jar
...
然后就失败了
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:diff
(default-cli) on project xxxxx: Execution default-cli of goal
org.liquibase:liquibase-maven-plugin:3.4.1:diff failed:
Plugin org.liquibase:liquibase-maven-plugin:3.4.1 or one of its
dependencies could not be resolved: Could not find artifact
com.github.malaguna:liquibase-hibernate:jar:liquibase-hibernate4-3.6.1 in central
(http://repo.maven.apache.org/maven2) -> [Help 1]
为什么当从 maven-liquibase-plugin 调用时,maven 试图从 maven central 下载工件,而不是 jitpack?我怎样才能避免这种情况?
如我之前所述,运行编译或打包时效果很好,工件已下载。
Maven 区分工件存储库和插件存储库,参见Repositories and Plugin_Repositories。所以在你的情况下你必须提供
<pluginRepositories>
<pluginRepository>
<id>jitpack.io</id>
<url>http://jitpack.io</url>
</pluginRepository>
</pluginRepositories>
插件的依赖是通过
定义的<plugin>
<dependencies>
<dependency>
....
</dependency>
</dependencies>
</plugin>
正如您已经注意到的那样。