maven liquibase插件找不到jitpack依赖

时间:2015-09-09 10:05:21

标签: java maven liquibase

我有一个非常奇怪的问题。前段时间我分叉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>

我运行mvn compilemvn 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中心获取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尝试从maven中心下载工件,而不是从maven-liquibase-plugin调用jitpack?我怎么能避免这个?

正如我之前所说,当运行编译或包时,它运行良好并且工件被下载。

1 个答案:

答案 0 :(得分:3)

Maven区分工件存储库和插件存储库,请参阅RepositoriesPlugin_Repositories。所以在你的情况下你必须提供

<pluginRepositories>
    <pluginRepository>
        <id>jitpack.io</id>
        <url>http://jitpack.io</url>
    </pluginRepository>
</pluginRepositories>

插件的依赖关系是通过

定义的
<plugin>
    <dependencies>
        <dependency>
            ....
        </dependency>
    </dependencies>
</plugin>

你已经注意到了。