- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我的多模块项目中,我只为几个模块创建了 module-info.java
。在使用 maven-compiler-plugin:3.7.0
编译期间,我收到下一个警告:
[WARNING] * Required filename-based automodules detected. Please don't publish this project to a public artifact repository! *
这是什么意思?那是因为我只有几个模块带有 module-info.java
而不是整个项目吗?
最佳答案
显式模块(即带有 module-info.java
的模块)只能访问它需要的模块代码(暂时忽略 implied readability)。如果所有依赖项都模块化了,那就太好了,但如果不是呢?如何引用非模块化的 JAR?
Automatic modules答案是:任何在模块路径上结束的 JAR 都会变成一个模块。如果 JAR 不包含模块声明,模块系统会创建一个具有以下属性的自动模块:
Maven 依赖于该机制,一旦您创建了 module-info.jar
,它会将所有依赖项放置在模块路径上。
有两种方法可以推断出自动模块的名称:
在第一种情况下,名称是维护者故意选择的,因此可以假定它是稳定的(例如,当项目模块化时它不会改变)。第二个显然在整个生态系统中不稳定 - 并非所有项目设置都会导致其依赖项的文件名完全相同。
What does it mean?
警告的原因是您的一些依赖项是自动模块并且没有在 list 中定义它们 future 的模块名称。相反,它们的名称源自文件名,这使得它们不稳定。
那么为什么不稳定的名字会成为这样的问题呢?假设您的库使用 requires guava
发布,而我的框架使用 requires com.google.guava
发布。现在有人将你的库与我的框架一起使用,突然他们需要模块路径上的模块 guava 和 com.google.guava。这个问题没有无痛的解决方案,因此需要预防!
如何?例如,通过阻止开发人员发布依赖于基于文件名的自动模块的 Artifact 。 😉
关于java - "Required filename-based automodules detected."警告是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46501047/
我在文档中使用了.. automodule::mypath.mymodule。我想要简单的模块文档字符串,没有其他成员信息。出现模块文档字符串,但没有指示模块名称,也没有特殊的段落格式。 是否有一种标
我有一个 Python 模块 my_module.py,如下所示: import numpy class A(numpy.ndarray): """ Extension for illustr
我暗暗怀疑 Sphinx 不喜欢我的翻译课。当我尝试执行自动方法时: .. automethod:: translations.models.Translation.new 我收到这个警告: /Use
我使用 automodule 从文档字符串生成文档,如下所示: .. automodule:: cdbus.csdb.chemnavi.db.schema :members: 但是当使用 :m
我有一个模块 mod 和一些子模块 submod 并使用 .. automodule::mod.submod 为它生成文档。 模块中元素(函数、类等)的签名现在显示限定名称,如 mod.submod.
我正在尝试根据 this 答案将 sphinx-doc :automodule: 与模拟模块结合使用。具体来说,我将 Mock 用于 PyQt5 模块导入,这在 ReadTheDocs 上不可用。 奇
这个问题的灵感来自 Mayavi documentation ,它有很好的分节符,每个模块成员之间描述的函数的名称。 我的 .rst 现在看起来像: SQLAlchemy Tables *******
我开始研究 python 模块,并希望“就地”记录代码。所以我在一个带有 sphinx-quickstart 的子目录中设置了 sphinx,导致了这个目录结构(只显示了我编辑的文件): 我的项目/
我正在使用 Sphinx,非常喜欢它,但它不会提取模块概要。没有错误或任何东西,只是简单的......没有。这是我要自动记录的模块: # vim: set fileencoding=utf-8 : "
我有一个用 Python 编写的 Raspberry Pi 项目,它使用 RPi.GPIO 模块。代码上的所有工作都是在 Windows 机器上完成的,其中 RPi.GPIO 不会安装,每次我尝试运行
我似乎无法让 ReadTheDocs 显示任何模块的 :members:,例如在我的本地 html 中,我得到: MODULE module.Beta(r, theta, beta) eval
在我的多模块项目中,我只为几个模块创建了 module-info.java。在使用 maven-compiler-plugin:3.7.0 编译期间,我收到下一个警告: [WARNING] * Req
我的文件夹结构如下所示: project/ mymodule/ __init__.py m1.py m2.py sub1/
我需要使用 Sphinx 记录我的 Python 项目。但我无法使用 autodoc。 当我配置项目时,我选择“扩展 autodoc”选项,但现在如果我使用 .. autoclass:: Class
据我了解,Sphinx 可选择支持 markdown 或 .md 文件,这对我的补充文档非常有用。我想做的是在 markdown 文件中使用 autoclass 或 automodule 标签。 通常
我是一名优秀的程序员,十分优秀!