2015-09-09 72 views
1

我有一个很奇怪的问题。前段时间我分叉liquibase-hibernate,因为我找到了bug并解决了它。maven liquibase插件没有找到jitpack依赖关系

虽然这pull request beeing接受,我部署我的liquibase-hibernate4插件到本地artifactory,一切都OK。

但现在它出现了问题。我必须在一个项目中使用这个依赖项,我不能使用我的本地工具。所以我用JitPack存储库这样:

新增JitPack在pom.xml库:

<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的中央让我liquibase-休眠神器:

[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 central,而不是jitpack,从maven-liquibase-plugin调用时下载工件?我怎样才能避免这种情况?

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

+0

是否在'〜/ .m2/settings.xml'中设置了代理? –

+0

不,我有两个设置,一个用于artifactory,另一个没有配置。它与artifactory运行良好,因为artifactory通过codehaus-cache找到jitpack artifact。问题来了,如果我不想使用artifactory。 – malaguna

+1

liquibase-maven-plugin是否尊重“外部”存储库设置?看起来他们正在旋转一个单独的配置,它不考虑你的存储库配置。 –

回答

3

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

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

插件的依赖关系是指通过

<plugin> 
    <dependencies> 
     <dependency> 
      .... 
     </dependency> 
    </dependencies> 
</plugin> 

因为你已经注意到了。

+1

我刚刚测试过您的解决方案,它的工作原理。我编辑你的答案,因为它是'pluginRepository'而不是'repository'的错误,但是一旦改变,它的工作就完美了。谢谢!我试图给你赏金,但我不能,我必须等待四个小时。 – malaguna