gpt4 book ai didi

java - 构建依赖于其他库的 Java 库

转载 作者:行者123 更新时间:2023-12-02 12:04:43 24 4
gpt4 key购买 nike

我正在尝试创建一个 Java lib (jar) 以在 Web 应用程序中使用,但我在依赖项方面遇到了一些困难。

比如说,如果我想要这个:

import org.apache.commons.lang3.StringUtils;

public class Shout {

public static void main(String[] args) {
new Shout().shout();
}

public void shout() {
StringUtils.upperCase("help!");
}

}

公开为shout.jar。

以上内容取决于 StringUtils,但我不希望 apache-commons.jar 打包在我的shout.jar 中。相反,我想找到一种方法(如果可能的话)让 Gradle 或 Maven 自动找出在将使用shout.jar 的Web 应用程序中shout.jar 需要哪些依赖项。

我尝试使用 Gradle(应用 java-library 插件)和 Maven(使用 jar 插件)构建一个 lib,但当我将我的shout.jar 作为 Gradle 依赖项时,它仍然无法解析 StringUtils.. .

为了让 Gradle 和 Maven 满意地解决我的 jar 的依赖关系,我需要在 jar 方面做一些特别的事情吗?

更新更多详细信息

抱歉说得有点含糊。我会再次尝试提供更多详细信息。

所以,假设我在 Maven 项目中有 Shout 类。与上面相同:

import org.apache.commons.lang3.StringUtils;

public class Shout {

public static void main(String[] args) {
new Shout().shout();
}

public void shout() {
StringUtils.upperCase("help!");
}

}

它有一个 pom 文件,里面有这个位(项目标签省略):

<groupId>michal</groupId>
<artifactId>shout</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>

</dependencies>

现在,如果我运行 Maven jar 插件,我就会有一个名为shout-1.0-SNAPSHOT.jar 的漂亮 jar 文件。

如果我创建另一个名为UsingShout 的项目,这次是带有Gradle 配置的Gradle:

group 'michal'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
flatDir {
dirs 'libs'
}

}

dependencies {
compile group: 'michal', name: 'shout', version: '1.0-SNAPSHOT'
}

我将漂亮的 jar 文件放入 lib 目录中,如下所示:

(btw, the pom.xml is the same as above)

我尝试这样做:

public class UsingShout {

public static void main(String[] args) {
new UsingShout().go();
}

private void go() {
new Shout().shout();
}

}

我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

如果我没有很好地解释自己,我深表歉意。

谢谢。

最佳答案

如果您的应用程序是 Maven 项目,则应将以下依赖项添加到 pom.xml 中:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>

关于java - 构建依赖于其他库的 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977699/

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