the*_*yuv 2 java ant netbeans build ivy
我正在使用 Tomcat、JDK8 和 Netbeans IDE 运行一个 Web 应用程序(使用 ANT 进行构建,使用 IVY 进行依赖管理)。
我目前将需要JARs提供给 JRE ( ,,, servlet-api.jar)的.jsp-api.jarel-api.jartomcat-dbcp.jarJAVA_HOME/jre/lib/ext
我正在升级到新的 JDK 版本 (JDK17),该版本不再具有 JRE 扩展文件夹。我想知道我应该把这些放在哪里JARs。
根据这篇文章(以及我见过的其他文章),最好的做法是使用依赖项管理器并将这些 jar 添加到您的类路径中。
我目前使用 IVY 来管理我的依赖项,并自定义了我的 ANT 构建以将运行时依赖项添加到WEB-INF/lib构建WAR文件的文件夹中。
但是,我不需要JARs上面列出的内容在运行时可供我的应用程序使用,我需要它们可供 JRE 使用。也就是说,我不希望JARs(servlet-api.jar等) 出现在WEB-INF/lib我的构建WAR文件中。我怎样才能做到这一点?
尖锐化我的最后一个问题:
JARs在我的开发环境中为 Netbeans 中的 JRE 提供某些/依赖项?JARs在生产环境中使用的构建 WAR 文件中使某些/依赖项可供 JRE 使用?JARs需要可供 JRE 使用?我见过的所有帖子都讨论了编译时依赖项与运行时依赖项,但我描述的情况似乎是不同类别的依赖项。它是否正确?我目前将JRE (
servlet-api.jar,,, )需要的 JAR 放置jsp-api.jar在.el-api.jartomcat-dbcp.jarJAVA_HOME/jre/lib/ext
这不是最好的做事方式。请参阅将外部 jar 放在 JAVA_HOME/lib/ext 目录中是一件坏事吗?
请注意,该jre/lib/ext机制已从较新版本的 Java 中删除,因此如果您使用较新版本的 Java,该机制将不再起作用。(这已在 JDK 9 中删除)。
但是,我不需要上面列出的 JAR 在运行时可供我的应用程序使用,我需要它们可供 JRE 使用。
为什么?
也就是说,我不希望 JAR(
servlet-api.jar等)出现在WEB-INF/lib我构建的 WAR 文件中。我怎样才能做到这一点?
为什么不?在 Java Web 应用程序中放入应用程序所需的依赖项WEB-INF/lib是很正常的事情。为什么你想以非标准的方式做事?
但是:某些 JAR 文件(例如servlet-api.jar、jsp-api.jar和 )el-api.jar不应包含在您的应用程序中。这些 JAR 文件定义标准 Java EE / Jakarta EE API,并将在运行时由部署 WAR 文件的应用程序服务器(Tomcat 等)提供给您的应用程序。
您可以使用带有范围的 Maven 将这些 JAR 文件添加为依赖项provided,这意味着它们将在编译时使用,但不会打包到您的应用程序中。
我是否正确地说这些 JAR 需要可供 JRE 使用?
不,这些 JAR 不需要可供 JRE 使用。包含标准 API 的 JAR 文件将由 Java EE / Jakarta EE 容器在运行时提供。其他 JAR 文件应包含在您的应用程序中WEB-INF/lib。
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |