我正在使用swagger-codegen-maven-plugin
生成一组存根(java
用于客户端,jaxrs
用于服务器)。我这样做是通过调用插件来生成两个Maven项目。
然而,生成为每个生成的子项目创建 POM,显然我不能在顶级POM中将它们作为依赖项引用它们,如果它们还不存在的话!
这是怎么回事? Maven是否提供了一种拾取动态生成的子模块的机制?
答案 0 :(得分:1)
如果您知道子模块的路径和名称,则可能已经预先定义了父pom。
步骤1:创建maven父pom以执行多个子模块。您目前基于招摇的maven构建应该是这个父pom下的子模块。
步骤2:确保父pom中定义的模块的执行顺序是首先执行基于swagger的模块。
第3步:首先运行基于swagger的maven模块。这将生成其他maven项目。根据生成的模块的名称和子项目的路径,您现在可以在父pom中引用它们。
步骤4:从父pom模块运行聚合构建。确保在首次运行聚合构建时已存在子POM的版本。否则maven可能会抱怨缺少模块。我假设maven在启动相应模块之前将子pom文件加载到内存中。所以这应该工作。
Here是多模块构建的一个示例。
答案 1 :(得分:0)
你要去外面的maven可以做什么。 Maven想要在加载父pom时解析所有模块,这是在实际调用codegen插件之前。我建议如下:
src/gen/java
文件夹以获取输出文件。jaxrs生成器将保留pom.xml(如果存在),这将允许您更新它,更改依赖关系等。如果Java客户端不遵循该规则,则在codegen项目中提交票证,因为它应该遵循相同的模式。