Pracuję w ustalonym kodzie z istniejącym oddzielnym pom.xml.Czy projekt maven parent może zawierać moduł na tym samym poziomie katalogowym?
Intencją jest włączenie projektu podrzędnego o nazwie "ul" do podkatalogu poza macierzystym. Uwaga: plik ul/pom.xml już istnieje i działa samodzielnie.
Więc w pom.xml rodzica I dodaje:
<modules>
<module>hive</module>
</modules>
Problemem jest to, że w zasadzie tracą zdolność do tworzenia się wdrożyć słoik z projektu nadrzędnego.
[email protected]:/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)
Wygląda na to, że maven chce, żebym utworzył macierzystą pompę, która w zasadzie nic nie robi, poza zdefiniowaniem modułów zależności.
Mogę utworzyć nowy pom.xml. Ale nie mogę tego zrobić, aby przenieść istniejące pliki projektu do nowego podkatalogu.
Czy istnieje sposób obejścia tego? Na przykład. definiowanie submodułu, który żyje na tym samym poziomie (nie subdir)? Lub jakiś inny sposób pracy z istniejącą strukturą dir?
dzięki
Follow-up: W oparciu o dane, które moduł może być po prostu plik w lokalnym katalogu, ja stworzyła kolejną pom który wywołuje pierwotnego. Oryginalny został przemianowany na pommod.xml, a nowy pokazany poniżej nazywa się 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>
wpadłem "mvn skompilować pakiet", ale wciąż ten sam błąd:
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
Użyłem twojej wskazówki, że moduł to plik pomXX.xml. Nadal występują problemy i zaktualizowano oryginalny wpis. – javadba
Być może udostępnij trochę więcej szczegółów POM związanych z projektami. Którą budujesz, jak to się nie udaje? –
Konieczne wydaje się posiadanie dwóch różnych pom's; jeden dla celu pom jako rodzica, a drugi dla pliku jar. Działa wtedy - choć niewygodne. – javadba