Дочерние модули Maven не создаются - PullRequest
5 голосов
/ 28 марта 2011

У меня относительно простой мультимодульный maven buid с родительским pom. Это включает в себя 2 дочерних модуля следующим образом:

<modules>
    <module>WebApp</module>
    <module>WebService</module>
</modules>

Когда я запускаю mvn clean install на верхнем уровне, он очищает и устанавливает каждый дочерний модуль, как и ожидалось. Однако сейчас я пытаюсь добавить цель плагина (codehaus weblogic) для развертывания WebApp .war в Weblogic 10.3.4, например. mvn clean install weblogic: развернуть . По некоторым причинам это не запускает этапы очистки и установки, а выполняет развертывание. Если я запускаю команду из каталога WebApp, она выполняет очистку и установку перед развертыванием.

Есть ли у меня какая-то недоработка, которая не запустит фазы детского жизненного цикла, если выполнить цель на верхнем уровне. Вот вывод командной строки:

[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   SupportClient
[INFO]   SupportClient-WebServices
[INFO]   SupportClient-WebApp
[INFO] Searching repository for plugin with prefix: 'weblogic'.
[INFO] org.apache.maven.plugins: checking for updates from central
[INFO] org.codehaus.mojo: checking for updates from central
[INFO] ------------------------------------------------------------------------
[INFO] Building SupportClient
[INFO]    task-segment: [clean, install, weblogic:deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing C:\Development\Destin8SupportClient\pom.xml to C:\Users\finchaj.HPH\.m2    \repository\com\mcpplc\supportClient\supportClient\1.0\supportClient-1.0.pom
[INFO] [weblogic:deploy]
[INFO] Weblogic Deployment beginning with parameters DeployMojoBase[adminServerHostName = localhost, adminServerProtocol = t3, adminServerPort = 8001, userId = xx, password = ****, artifactPath = C:\Development\Destin8SupportClient/WebApp/target/WebApp.war, projectPackaging = war, name = support-client-webapp, targetNames = AdminServer, remote = false]
[INFO] Weblogic Deployment parameters [-adminurl, t3://localhost:8001, -username, xx, -password, xx, -name, support-client-webapp, -targets, AdminServer, -source, C:\Development\Destin8SupportClient/WebApp/target/WebApp.war, -deploy]
weblogic.Deployer invoked with options:  -adminurl t3://localhost:8001 -username xx-name support-client-webapp -targets AdminServer -source C:\Development\Destin8SupportClient/WebApp/target/WebApp.war -deploy
The file, 'C:\Development\Destin8SupportClient/WebApp/target/WebApp.war', does not exist.

Ответы [ 3 ]

2 голосов
/ 28 марта 2011

Это работает weblogic: развертывание цели в модуле верхнего уровня (pom!). Эта цель может быть выполнена только на модуле войны или слуха.

Вам необходимо связать эту цель в субмодуле WebApp для запуска на этапе установки. В настоящее время он работает на модуле верхнего уровня (pom!).

например. попробуйте добавить следующее в вашу конфигурацию weblogic в подмодуле Webapp.

  <executions> 
     <execution> 
        <phase>install</phase> 
          <goals> 
            <goal>deploy</goal> 
          </goals> 
     </execution> 
   </executions> 

См. Также Пример C-1 в этой документации

Если вы хотите, чтобы этот запуск выполнялся в конце вашей сборки, после сборки всех других модулей вам потребуется:

  • измените порядок ваших подмодулей, чтобы WebApp был последним, затем сделайте, как указано выше
  • или добавьте еще один подмодуль, который будет выполняться последним, что зависит от вашего подмодуля WebApp. Затем скажите плагину weblogic использовать этот файл .war, указав следующее свойство maven.weblogic.war. Возможно, вы захотите сначала использовать зависимость : copy goal, чтобы получить целевой каталог этого последнего субмодуля.
1 голос
/ 28 марта 2011

Если вы хотите сначала запустить фазу установки для всех проектов, а затем развернуть свои проекты на своем веб-сервере, вам нужно разделить вызовы maven.

mvn clean install
mvn weblogic:deploy

По умолчанию maven выполняет все задачи для каждого проекта и для разделения задач maven - единственное решение для их отдельного запуска.

0 голосов
/ 28 марта 2011

maven выполняет все указанные цели сначала в родительском проекте, а затем в chldren.

Из журналов видно, что maven выполнил цели clean и install родителя, а затем попытался выполнить цель weblogic:deploy.Теперь weblogic:deploy, очевидно, не является целью, которая имеет отношение к родителю, поскольку она предназначена для развертывания дочернего веб-приложения.maven не знает об этом и, следовательно, об ошибке.

Возможно, вам следует пересмотреть решение npellow, так как оно должно работать для ваших требований.

...