gpt4 book ai didi

java - Maven需要额外的依赖来构建项目,而Gradle不需要

转载 作者:行者123 更新时间:2023-12-03 03:12:09 26 4
gpt4 key购买 nike

我目前正在学习JFoenix库。有一个不错的demoinstructions如何运行它。

JFoenix使用Gradle,但是我需要使用Maven,因此我决定使用Maven重新创建演示项目以进行进一步的测试。

当我尝试运行新创建的项目时出现了问题。原来没有找到某些类(例如de.jensd.fx.glyphs.GlyphIcon)。我发现de.jensd:fontawesomefx-fontawesome:4.7.0-5在运行时取决于de.jensd:fontawesomefx-commons:8.15。因此,我决定将其添加为编译依赖项,并且演示正常运行。但是演示中的build.gradle仅指定de.jensd:fontawesomefx-fontawesome:4.7.0-5

Maven和Gradle是否以不同的方式处理依赖关系?还是特定情况?

这是我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>jfoenix</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>

<!-- Bintray is needed for de.jensd:fontawesomefx-fontawesome. -->
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>https://jcenter.bintray.com</url>
</repository>
</repositories>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>8.0.7</version>
</dependency>
<dependency>
<groupId>io.datafx</groupId>
<artifactId>datafx</artifactId>
<version>8.0.1</version>
</dependency>
<dependency>
<groupId>io.datafx</groupId>
<artifactId>flow</artifactId>
<version>8.0.1</version>
</dependency>
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-fontawesome</artifactId>
<version>4.7.0-5</version>
</dependency>
<!-- Without this dependency the project can't be compiled. -->
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-commons</artifactId>
<version>8.15</version>
</dependency>
</dependencies>

</project>

附言我不确定这个问题的标题是否可以。因此,欢迎提出建议。

P.P.S.如果尝试使用我的 pom.xml编译演示,则必须注释掉 demos.components.AnimationTemplateDemo.java,因为 com.jfoenix.transitions.template包是 new,在 com.jfoenix:jfoenix:8.0.7中不可用。

最佳答案

jcenter的pom.xml文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-fontawesome</artifactId>
<version>4.7.0-5</version>
<dependencies>
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-commons</artifactId>
<version>8.15</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>

如您所见,仅在运行时才需要fontawesomefx-commons。我不确定为什么会这样,但是它解释了为什么在编译时未将其提取。

我现在没有从gradle中获取依赖的地方,您也没有提及,但是我的猜测是那里的配置不是运行时的,而是编译的。

编辑:作用域是 在更高版本的fontawesomefx-fontawesome上编译。因此,似乎在4.7.0-5版本中指定的运行时范围可能是一个错误……

版本4.7.0-9的 pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-fontawesome</artifactId>
<version>4.7.0-9</version>
<dependencies>
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx-commons</artifactId>
<version>9.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

关于java - Maven需要额外的依赖来构建项目,而Gradle不需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53049982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com