Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 为什么maven发布插件允许依赖关系管理中的快照版本?_Maven 2_Snapshot_Dependency Management_Maven Release Plugin - Fatal编程技术网

Maven 2 为什么maven发布插件允许依赖关系管理中的快照版本?

Maven 2 为什么maven发布插件允许依赖关系管理中的快照版本?,maven-2,snapshot,dependency-management,maven-release-plugin,Maven 2,Snapshot,Dependency Management,Maven Release Plugin,我们有一家公司的母公司pom。这使用DependencyManager来管理所使用的所有工件的所有依赖项的版本 令人担忧的是,快照版本可以在DependencyManager中定义。尽管在执行maven发布时,pom允许在DependencyManager中与快照版本一起发布。为什么? 如果我将子项目指向公司父pom的已发布版本,并且此子项目使用DependencyManager中定义的依赖项(尽管它是快照版本),则无法发布子项目 为什么Maven允许发布DependencyManager中定义

我们有一家公司的母公司pom。这使用DependencyManager来管理所使用的所有工件的所有依赖项的版本

令人担忧的是,快照版本可以在DependencyManager中定义。尽管在执行maven发布时,pom允许在DependencyManager中与快照版本一起发布。为什么?

如果我将子项目指向公司父pom的已发布版本,并且此子项目使用DependencyManager中定义的依赖项(尽管它是快照版本),则无法发布子项目

为什么Maven允许发布DependencyManager中定义的工件的快照版本?如果定义了快照版本,如何将maven发布插件配置为失败

令人担忧的是,快照版本可以在DependencyManager中定义。尽管在执行maven发布时,pom允许在DependencyManager中与快照版本一起发布。为什么?

我希望在发布时更新
dependencyManagement
中的快照版本。事实上,有一些Jira关于这一点,例如,这可能会影响你

所以问题是:你在使用哪个版本的插件


但说实话,现在还不清楚哪些版本会受到影响,评论让人困惑(所以我想知道这个问题是否已经解决)。无论如何,如果您使用的版本受到影响,请升级到较新的版本。如果缺陷/回归(我认为这是一个缺陷)仍然存在,那么就提出一个新问题。

我不知道为什么(我个人认为这是一个缺陷),但我有一种方法来防止这种情况发生:使用Maven Enforcer插件

一家名为(小写s)的公司创建了一个规则()来防止这个确切的问题

您基本上需要将以下内容添加到父POM中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.4.1</version>
  <executions>
    <execution>
      <id>enforce-project-rules</id>
      <phase>test</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <NoSnapshotDependenciesInDependencyManagementRule
            implementation="de.smartics.maven.enforcer.rule.NoSnapshotsInDependencyManagementRule">
            <onlyWhenRelease>true</onlyWhenRelease>
            <checkOnlyResolvedDependencies>false</checkOnlyResolvedDependencies>
          </NoSnapshotDependenciesInDependencyManagementRule>
        </rules>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>de.smartics.rules</groupId>
      <artifactId>smartics-enforcer-rules</artifactId>
      <version>1.0.2</version>
    </dependency>
  </dependencies>
</plugin>

org.apache.maven.plugins
maven enforcer插件
1.4.1
执行项目规则
测试
执行
真的
假的
de.smartics.rules
smartics强制执行器规则
1.0.2

thx。我们正在使用2.0-beta-9。我们将看一看这些jira票证关于这个问题的新jira。看起来它在2.2.2中被修复了,但至少在2.4中被重新引入。