我遇到一个问题,当且仅当定义了父 pom 时,maven 才无法正确地将属性替换到我的存储库 URL 中。这尤其是一个问题,因为父 pom 位于远程存储库中,所以我需要定义父 pom。
最小可重现示例:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.group</groupId>
<artifactId>parent-artifact</artifactId>
<version>1.0.0</version>
<relativePath/>
</parent>
<groupId>com.group</groupId>
<artifactId>project-artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>project</name>
<description>test project</description>
<properties>
<nexus.url>https://nexus.myorganization.net</nexus.url>
</properties>
<repositories>
<repository>
<id>nexus-server</id>
<url>${nexus.url}/repository/maven-releases/</url>
</repository>
</repositories>
</project>
Run Code Online (Sandbox Code Playgroud)
使用这个 pom,我得到了错误消息,Cannot access ${nexus.url}/repository/maven-snapshots/...
很明显它没有用实际值替换属性。
如果我删除<parent>
POM 的部分,那么属性替换突然开始正常工作:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.group</groupId>
<artifactId>project-artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>project</name>
<description>test project</description>
<properties>
<nexus.url>https://nexus.myorganization.net</nexus.url>
</properties>
<repositories>
<repository>
<id>nexus-server</id>
<url>${nexus.url}/repository/maven-releases/</url>
</repository>
</repositories>
<!-- adding this dependency so that Maven is forced to download …
Run Code Online (Sandbox Code Playgroud) 我的项目中的传递依赖项存在版本冲突,我正在尝试使用它mvn dependency:tree -Dverbose
来查找版本冲突。然而,每当我运行时mvn dependency:tree -Dverbose
,它就会挂起并且永远不会完成。我尝试使用调试模式(mvn --debug dependency:tree -Dverbose
)来找出发生了什么,似乎它正在连接到成百上千个存储库,而我在项目中的任何地方都没有定义这些存储库,编写跟踪文件,使用连接器,使用传输器等。 ..... 请参阅这里的pastebin,了解它在几个小时内所做的事情的一小段:https://pastebin.com/raw/L3z4u5Hj
当我不包含该标志时,这种情况不会发生-Dverbose
:mvn dependency:tree
它本身非常快速,并且在几秒钟内完成。
此外,对于我拥有的任何其他存储库或代码库都不会发生这种情况:只有一个特定的存储库或代码库。但显然我不知道这个代码库与其他代码库有什么不同,只是依赖关系不同(假设某些依赖关系是问题的原因。)
似乎官方 Maven 邮件列表上的人也遇到了这个问题,但似乎他们也永远无法解决它: https: //www.mail-archive.com/users@maven.apache.org/msg143124。 html
任何帮助,将不胜感激。如果我无法弄清楚这一点,我将不得不一一删除依赖项,直到找到导致问题的依赖项,这将需要很长时间,因为这是一个非常大的代码库。
Maven版本:
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.10, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-54-generic", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Spring Tool Suite 4 与 Eclipse Oxygen 一起使用,但似乎不存在特定于 Spring Tool Suite 的自动完成/内容辅助功能。出现正常的日食内容辅助,但不会出现任何特定于 STS 的内容。
我关注了 StackOverflow 上的一些其他有用的帖子,并指出确保选择了 Preferences -> Java -> Editor -> Content Assist -> Advanced 中的 Spring 提案种类。但是,在执行此操作时,我发现该部分中没有 Spring 提案类型。我正在使用 STS 4,但由于某种原因,提案种类没有出现在该列表中。
如何解决此问题并使内容辅助/自动完成功能适用于 Spring Tool Suite 4?
注意:我已经尝试了以下 StackOverflow 文章的解决方案,但由于某种原因,它们都没有奏效。他们似乎都假设提案种类出现在它们应该出现的地方。 spring 工具套件中的内容自动完成 4 Eclipse Spring 工具缺少内容辅助/自动完成 Spring 工具套件无法自动显示字段变量名称提示?
这是在我的 IDE 中出现的提案种类的列表 - 请注意,没有出现与 Spring 相关的选项。