У меня есть сервер weblogic (12.2.1.3.0), и я хочу развернуть ear-файл через maven. Это отлично работает. Но когда я хочу повторно развернуть его, выдается ошибка. Причина в том, что контекст-корень одинаков. Поэтому я должен сначала удалить файл ear, а затем повторно развернуть его или обновить файл ear. Вопрос в том, как это сделать.
Я запустил Maven через Eclipse с «чистой установкой».
pom родительского проекта:
<modules>
<module>Aras-ear</module>
<module>Aras-web</module>
<module>Aras-ejb</module>
</modules>
<profiles>
<!-- Profil für ARAS (normal) -->
<profile>
<id>aras</id>
<properties>
<datasource.name>ArasDataSource</datasource.name>
<environment.name>ARAS</environment.name>
<rootcontext.name>aras</rootcontext.name>
<earfile.name>Aras-ear</earfile.name>
</properties>
</profile>
<!-- Profil für ARAS (Nightly Build) -->
<profile>
<id>aras_nb</id>
<properties>
<datasource.name>ArasNbDataSource</datasource.name>
<environment.name>ARAS-NB</environment.name>
<rootcontext.name>aras_nb</rootcontext.name>
<earfile.name>Aras_nb-ear</earfile.name>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
<resources>
<!-- Lässt das Setzen der Variablen in den Resources zu -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
POM уха-проекта:
<parent>
<groupId>itzbund.zoll</groupId>
<artifactId>Aras</artifactId>
<version>1.0</version>
</parent>
<artifactId>Aras-ear</artifactId>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<!-- finalName ist z.B. "aras-ear-1.0" oder "aras_nb-ear-1.0" (gibt Namen des ear-Files an) -->
<finalName>${earfile.name}-${project.version}</finalName>
<modules>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>Aras-web</artifactId>
<!-- rootcontext.name = "aras" oder "aras_nb" (gibt Aufruf-URL vor) -->
<contextRoot>/${rootcontext.name}</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>12.2.1-3-0</version>
<configuration>
<adminurl>t3://localhost:7001</adminurl>
<user>weblogic</user>
<password>welcome1</password>
<upload>true</upload>
<action>deploy</action>
<remote>false</remote>
<verbose>true</verbose>
<!-- source ist entsprechendes Ear-File (je nach gewähltem Profil) im Target-Verzeichnis des ear-Projektes -->
<source>${project.build.directory}/${earfile.name}-${project.version}.ear</source>
<name>${earfile.name}-${project.version}</name>
</configuration>
<executions>
<!-- Wenn ear-File nicht auf WLS vorhanden, wird execution "clean" Fehler werfen -->
<!-- <execution>
<id>clean</id>
<phase>clean</phase>
<goals>
<goal>undeploy</goal>
</goals>
</execution> -->
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Я попробовал код
<execution>
<id>clean</id>
<phase>clean</phase>
<goals>
<goal>undeploy</goal>
</goals>
</execution>
но это не сработало. Код ошибки был:
[ОШИБКА] Не удалось выполнить цель com.oracle.weblogic: weblogic-maven-plugin: 12.2.1-3-0: отменить (очистить) проект Aras-ear: weblogic.management.ManagementException: [Deployer: 149163 ] Блокировка редактирования домена принадлежит другому сеансу в неисключительном режиме. Эта операция развертывания требует монопольного доступа к блокировке редактирования и поэтому не может продолжаться. Если в Консоли администрирования используется «Автоматическая блокировка Aquire и активация изменений», срок действия блокировки скоро истечет, поэтому повторите эту операцию.