我已经从weblogic-maven-plugin(10.3)迁移到wls-maven-plugin(12.1),在部署共享库时遇到了问题。
问题是wls-maven-plugin不传递给Weblogic。部署器库标志。对于weblogic-maven-plugin,我有相同的conf:
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>10.3.6.0</version>
<configuration>
<adminurl>t3://localhost:7001</adminurl>
<user>${weblogic.username}</user>
<password>${weblogic.password}</password>
<upload>true</upload>
<source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<name>${project.build.finalName}</name>
<isLibrary>true</isLibrary>
</configuration>
</plugin>
元素isLibrary显示插件传递-library标志,调用Weblogic.Deployer.
迁移到wls插件后:
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>wls-maven-plugin</artifactId>
<version>12.1.1.0</version>
<configuration>
<adminurl>t3://localhost:7001</adminurl>
<user>${weblogic.username}</user>
<password>${weblogic.password}</password>
<middlewareHome>${env.MW_HOME}</middlewareHome>
<upload>false</upload>
<action>deploy</action>
<remote>false</remote>
<isLibrary>true</isLibrary>
<verbose>true</verbose> <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<name>${project.build.finalName}</name>
</configuration>
</plugin>
但是wls插件没有传递-library标志给Weblogic。部署器和结果jar部署类型未知,所以我的应用程序不能使用库,因为没有找到它。
注意:如果我正在使用Weblogic手动部署。部署器工作正常-所以我的清单和weblogic-application.xml文件应该是正确的。
解决方法是wls:wlst。调用自己的wlst脚本(应该由自己编写-它很简单)并从maven传递参数,如部署源,url,用户/密码(使用wlst命令部署我们可以传递库参数)。它的工作很好,但在我看来很糟糕。此外,我认为可以使用ant任务和调用weblogic.deployer(无论如何maven插件和wlst调用weblogic deployer应用程序-它只是包装器)。
请遵循以下步骤:
-
标识oracle-maven-sync的pom文件和jar。将pom文件编辑为您的maven版本。安装:mvn -e install:install-file -DpomFile=oracle-maven-sync.12.1.2pom -Dfile = oracle-maven-sync.12.1.2.jar
-
将下列依赖项添加到您的存储库中:jdom - 1.1maven-artifactmaven-compatmaven-plugin-apicommons -编码- 1.6commons - io - 2.2
-
在本地机器上创建一个文件夹,放置以下Weblogic依赖项:
(从weblogic安装中复制wlserver/server/lib/weblogic.jar和wlserver/modules文件夹下的所有文件)。设置MW_HOME指向weblogic_dependencies文件夹。
在安装了Weblogic的机器上运行以下命令:mvn -e -X -U com.oracle。maven:oracle-maven-sync:push -DserverId=archiva_repository_id_from_maven_config_xml - oracle-maven-sync. oraclehome =%MW_HOME%
mvn -U prototype:crawl -Dcatalog=c:.m2 prototype -catalog.xml
在您的工件存储库中部署wls-maven-plugin(请参阅Oracle文档)。
不带middlewareHome参数的远程部署(可能不工作):
mvn clean package com.oracle。weblogic:wls-maven-plugin:deploy -Dadminurl=t3://admin_server_ip:7001 -Duser=weblogic_user -Dpassword=weblogic_pass -Dtargets=SRV_7011 - upload=true -Dname=maven_project_id
使用-DmiddlewareHome=%MW_HOME%参数远程部署:
mvn clean package com.oracle。weblogic:wls-maven-plugin:deploy -Dadminurl=t3://admin_server_ip:7001 -Duser=weblogic_user -Dpassword=weblogic_pass -Dtargets=SRV_7011 - dumpload =true -Dname=maven_project_id -Dverbose=true -DmiddlewareHome=%MW_HOME%
在maven插件中没有"isLibrary" true标签来部署为库
我认为这比提供的答案更简单。
通过仔细查看Oracle文档页,您可以看到有一个配置选项library
,它声明:作为共享Java EE库或可选包部署。
此设置还需要artifactLocation
选项。
下面的代码工作得很顺利,并将commonlib模块部署为一个库:
<build>
<finalName>CommonLibs</finalName>
<plugins>
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>12.2.1.3</version>
<configuration>
<user>USER_NAME</user>
<password>PASS_WORD</password>
<name>${project.build.finalName}</name>
<source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<artifactLocation>${project.build.directory}/${project.build.finalName}.${project.packaging}</artifactLocation>
<library>true</library>
</configuration>
<executions>
<execution>
<id>up</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>