web -maven-plugin:部署共享库



我已经从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应用程序-它只是包装器)。

请遵循以下步骤:

  1. 标识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

  2. 将下列依赖项添加到您的存储库中:jdom - 1.1maven-artifactmaven-compatmaven-plugin-apicommons -编码- 1.6commons - io - 2.2

  3. 在本地机器上创建一个文件夹,放置以下Weblogic依赖项:

<>之前weblogic_dependencies|——wlserver|——服务器|——自由——weblogic.jar|——模块之前

(从weblogic安装中复制wlserver/server/lib/weblogic.jar和wlserver/modules文件夹下的所有文件)。设置MW_HOME指向weblogic_dependencies文件夹。

  1. 在安装了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%

  2. mvn -U prototype:crawl -Dcatalog=c:.m2 prototype -catalog.xml

  3. 在您的工件存储库中部署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>

最新更新