我正在使用现有的独立 pom.xml 在已建立的代码库中工作。
目的是将一个名为“hive”的子项目合并到父项目的子目录中。注意: hive/pom.xml 确实已经存在,并且它本身可以正常工作。
所以在父母的 pom.xml 我添加了:
<modules>
<module>hive</module>
</modules>
问题是我基本上失去了从父项目创建可部署 jar 的能力。
stephenb@gondolin:/shared/git2/etl$ mvn package assembly:single
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).
Project ID: com.myco.etl:etl
POM Location: /shared/git2/etl/pom.xml
Validation Messages:
[0] Packaging 'jar' is invalid. Aggregator projects require 'pom' as packaging.
Reason: Failed to validate POM for project com.myco.etl:etl at /shared/git2/etl/pom.xml
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.reactor.MavenExecutionException: Failed to validate POM for project com.myco.etl:etl at /shared/git2/etl/pom.xml
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:404)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:272)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
maven 似乎希望我创建一个父 pom,除了定义依赖模块之外,它基本上什么都不做。
好吧,我可以创建一个新的 pom.xml。但我不能做的是将现有的项目文件推送到一个新的子目录中。
有没有办法解决这个问题?例如定义一个位于同一级别的子模块(不是子目录)?或者其他方式来处理现有的目录结构?
谢谢
后续:基于模块可以简单地是本地目录中的文件的输入,我创建了另一个调用原始文件的 pom。原来的重命名为 pommod.xml,下面显示的新的名为 pom.xml。
<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>com.myco.etl</groupId>
<artifactId>etl</artifactId>
<name> ETL Helpers</name>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>appminer</module>
<module>pommod.xml</module>
</modules>
我跑了“mvn compile package”但仍然得到同样的错误:
Project ID: com.myco:app_miner
POM Location: /shared/git2/etl/mycopom.xml
Validation Messages:
[0] Packaging 'jar' is invalid. Aggregator projects require 'pom' as packaging.
Reason: Failed to validate POM for project com.myco:app_miner at /shared/git2/etl/myco/pom.xml