【发布时间】:2013-04-17 07:51:51
【问题描述】:
我正在使用现有独立 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。但是我不能做的就是将现有的项目文件推送到一个新的子目录中。
有没有办法解决这个问题?例如。定义一个位于同一级别的子模块(不是子目录)?或者其他方式来处理现有的 dir 结构?
谢谢
跟进:基于模块可以简单地成为本地目录中的文件的输入,我 创建了另一个调用原始 pom 的 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
【问题讨论】: