一些行家技巧和窍门

我正在将使用WebLogic Workshop(是的,使用不受支持的IDE可以正确阅读)的现有应用程序迁移到Maven。 在旅途中有一些陷阱,我想在这里写下给那些可能会觉得有用并且特别适合自己的人以作为参考。

整个应用程序使用Apache XMLBeans处理与XML有关的所有事情,这是我迁移到Maven的第一部分。 Maven确实有一个用于XMLBeans的maven插件,下面的代码片段说明了如何将该插件合并到项目中。

<build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>xmlbeans-maven-plugin</artifactId><version>2.3.3</version><configuration> <javaSource>1.5</javaSource> </configuration> <executions><execution><phase>generate-sources</phase><goals><goal>xmlbeans</goal></goals></execution></executions></plugin></plugins></build>

这里的一个难题是,如果希望生成的XMLBeans代码具有maxoccurs设置为无界的元素的“列表”数据结构,则需要使用<javaSource> 1.5 </ javaSource>标记。 仅当您的代码已经使用列表类型时。 没有此标签,此插件将仅生成无界元素的数组类型。

接下来,是时候迁移公开应用程序Web服务的模块了。 当它在WebLogic上运行时,它使用“ jwsc”任务生成了需求工件。 我找不到能满足此要求的现成的Maven插件,经过一番搜索后,我遇到了通过Maven ant run插件调用ant构建的解决方案。 让我们看一下pom.xml上所需的配置更改;

<plugin><groupId>org.codehaus.gmaven</groupId><artifactId>gmaven-plugin</artifactId><version>1.3</version><executions><execution><id>set-main-artifact</id><phase>package</phase><goals><goal>execute</goal></goals><configuration><source>project.artifact.setFile(new File(project.build.directory+'/'+project.artifactId+'-'+project.version+'.war'))</source></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.6</version><executions><execution><phase>prepare-package</phase><configuration><target><property name="maven.compile.classpath" refid="maven.compile.classpath" /><property name="maven.runtime.classpath" refid="maven.runtime.classpath" /><property name="maven.test.classpath" refid="maven.test.classpath" /><property name="maven.plugin.classpath" refid="maven.plugin.classpath" /><ant antfile="src/main/ant/build.xml" target="all" /></target></configuration><goals><goal>run</goal></goals></execution></executions><dependencies><dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.7.1</version><scope>runtime</scope></dependency><dependency><groupId>ant-contrib</groupId><artifactId>ant-contrib</artifactId><version>1.0b2</version><scope>runtime</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>weblogic</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>xmlbeans</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>wlserv</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>jaxwsrt</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>beadescriptor</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>beadescriptorbinding</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>beadescriptorsettable</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>weblogic</groupId><artifactId>staxb</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>2.4.0</version></dependency><dependency><groupId>weblogic</groupId><artifactId>webservices</artifactId><version>10.3.0</version><scope>compile</scope></dependency><dependency><groupId>com.sun</groupId><artifactId>tools</artifactId><version>1.5.0</version><scope>system</scope><systemPath>${java.home}/../lib/tools.jar</systemPath></dependency></dependencies></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.1.1</version><configuration><encoding>UTF-8</encoding></configuration><executions><execution><id>default-war</id><phase>none</phase></execution></executions></plugin>

请注意,使用maven install file命令在maven存储库中手动安装了groupId设置为“ weblogic”的依赖项。 所需的jar库如下:

  • wlfullclient.jar(此jar根据此处指定的说明构建)
  • webserviceclient.jar
  • webservices.jar
  • wls-api.jar
  • xercesImpl.jar
  • xmlParserAPIs.jar
  • com.bea.core.descriptor.settable.binding_1.4.0.0.jar
  • com.bea.core.descriptor.wl.binding_1.1.0.0.jar
  • com.bea.core.descriptor.wl_1.1.0.0.jar
  • com.bea.core.xml.beaxmlbeans_1.0.0.0_2-4-0.jar
  • com.bea.core.xml.staxb.buildtime_1.3.0.0.jar
  • glassfish.jaxws.rt_2.1.3.jar

下一步是将ant build.xml拖放到项目的src / main / ant目录中。 build.xml如下;

<project name="build-webservice" default="all"><target name="all" depends="build.webService" /><path id="maven_plugin_classpath"><pathelement path="${maven.plugin.classpath}" /></path><path id="maven_runtime_classpath"><pathelement path="${maven.compile.classpath}" /><pathelement path="${maven.runtime.classpath}" /><pathelement path="${maven.plugin.classpath}" /><pathelement path="${weblogic.jar}" /></path><taskdef name="jwsc"classname="weblogic.wsee.tools.anttasks.JwscTask"classpath="${weblogic.jar}"classpathref="maven_plugin_classpath"/><target name="build.webService" description="Compile the web services if not up2date"><!--Eclipse compiles and places classes into target/classes when the workspace is building.If this folder exists when jwsc runs, then any classes that are already compiled will NOTbe included in the final WAR file.  Thus, this directory is removed prior to created thewebServices WAR fie.--><delete dir="target/classes" /><jwsc srcdir="${project.build.sourceDirectory}"destDir="target"classpathref="maven_runtime_classpath"keepGenerated="yes"applicationxml="${project.build.directory}/application.xml"fork="true"memorymaximumsize="256m"verbose="true"debug="on"><module contextPath="ws" name="${project.artifactId}-${project.version}"><jwsfileset srcdir="."><include name="**/*.java" /><exclude name="**/*Test.java" /></jwsfileset></module></jwsc>    </target>    
</project>

请注意,无需对此build.xml进行任何更改。

接下来,它是关于构建要部署到weblogic的EAR模块的。 查看由WebLogic Workshop构建的EAR,我可以看到所有必需的第三方库都被捆绑到了一个名为APP-INF / lib的文件夹中,该文件夹位于EAR的根目录中。 另外,WAR文件在lib目录中没有任何jar文件,我想在使用maven构建EAR时模仿此功能。 以下配置使我能够做到这一点;

<build><finalName>ErrorXAEAR</finalName><plugins><plugin><artifactId>maven-ear-plugin</artifactId><version>2.10.1</version><configuration><defaultLibBundleDir>APP-INF/lib/</defaultLibBundleDir><skinnyWars>true</skinnyWars><modules><jarModule><groupId>mtn.sa.errorxa</groupId><artifactId>errorxa-ejb</artifactId><bundleDir>/</bundleDir><bundleFileName>ErrorXAEJB.jar</bundleFileName></jarModule><webModule><groupId>mtn.sa.errorxa</groupId><artifactId>errorxa-service</artifactId><bundleDir>/</bundleDir><bundleFileName>ErrorXAService.war</bundleFileName></webModule></modules></configuration></plugin></plugins></build>

标签<skinnyWars>可以使war文件的lib目录不填充所需的第三方库,该第三方库现在捆绑在EAR的APP-INF / lib目录中。 标记<defaultLibBundleDir>负责将所有必需的库复制到EAR中名为APP-INF / lib的文件夹中。

关于EAR生成的另一件事是,我不希望maven生成application.xml文件,因为该文件以及weblogic-application.xml已经在项目上生成,因此我想使用它。 为此,我要做的就是将这两个文件都放到src / main / application文件夹中,并且默认的application.xml被覆盖。

我发现在构建EAR时,maven的mvndependency:tree工具非常有用,它可以识别和除去通过递归依赖关系拖入EAR的不必要的依赖关系。 使用一个简单的排除标签,我就可以删除不需要的库。

关于这个帖子。 我会不断更新我可能遇到的任何情况。 下一步是在构建过程中使用maven进行每个应用程序的部署和取消部署。

翻译自: https://www.javacodegeeks.com/2016/03/maven-tips-tricks.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【视频内含福利】原来手机套壳视频是这么做出来的

最近视频圈子里都在发这种视频&#xff0c;究竟是怎么做出来的&#xff1f;研究下来发现原来是用的这款名字叫Record Maker的APP&#xff0c;旨在帮助用户轻松快速给视频加上手机壳的效果。目前App Store上的版本是1.2.1&#xff0c;最近一次更新支持了iPhone11/iPhone12模型&a…

机器学习 基本概念,常用经典模型

1. 机器学习 明白一些基本概念 什么是机器学习研究如何通过计算的手段&#xff0c;利用经验来改善系统自身的性能通俗来讲&#xff0c;让代码学着干活 特征&#xff1a;自变量标签&#xff1a;因变量 学习的种类有监督学习&#xff1a;提供标签&#xff0c;分类、回归无监督学习…

日常开发之重构

作为开发人员&#xff0c;应该让重构贯穿于你的开发日常的每一刻。 为什么这么说&#xff1f; 重构是为了改善软件的设计、结构和实现&#xff0c;同时保留其现有的功能。 重构的潜在优势包括提高代码的可读性和降低复杂度。 这些都可以提高源代码的可维护性&#xff0c;并创建…

摇钱树

题目描述 Cpg 正在游览一个梦中之城&#xff0c;在这个城市中有n棵摇钱树。。。这下&#xff0c;可让Cpg看傻了。。。可是Cpg只能在这个城市中呆K天&#xff0c;但是现在摇钱树已经成熟了&#xff0c;每天 每棵都会掉下不同的金币&#xff08;不属于Cpg&#xff01;&#xff09…

apache thrift_使用Java快速入门的Apache Thrift

apache thriftApache Thrift是由facebook创建的RPC框架&#xff0c;现在它是一个Apache项目。 Thrift允许您在不依赖语言的定义文件中定义数据类型和服务接口。 该定义文件用作编译器的输入&#xff0c;以生成用于构建通过不同编程语言进行通信的RPC客户端和服务器的代码。 您也…

前端八大灵感设计,代码变为现实

我们都知道掌握编程技术是一项很难的事情&#xff0c;没有捷径可走。需要我们在日复一日的工作中去锻炼。如果想要达到擅长甚至需要长年累月的积累。下面列举了一些可以给你带来编码灵感的例子&#xff0c;相信你看到会有想去写代码的冲动。因为一个好的工程师&#xff0c;是不…

Apple 公司开发者账号添加团队成员

Apple 公司开发者账号添加团队成员 简介 首先公司内部团队开发需要的账号类型为公司账号&#xff0c;可以添加团队成员协同开发。 账号下的团队成员有三种角色&#xff1a; Team Agent (代理) 代理: 就是注册开发者账号的那一个&#xff0c;权限最高&#xff0c;续费和创建开发…

相互问题

HTTPS协议是用于确保我们的连接安全的公认标准。 理解此协议的工作原理不是问题&#xff0c;并且从2000年起可以使用相应的RFC文档 。 尽管HTTPS的使用如此广泛&#xff0c;但您仍然可以找到一种无需不必要的复杂性就无法处理此协议的软件。 不幸的是&#xff0c;在使用该语言…

八个使前端工程师惊艳的效果设计,码否?

我们都知道掌握编程技术是一项很难的事情&#xff0c;没有捷径可走。需要我们在日复一日的工作中去锻炼。如果想要达到擅长甚至需要长年累月的积累。 下面列举了一些可以给你带来编码灵感的例子&#xff0c;相信你看到会有想去写代码的冲动。 因为一个好的工程师&#xff0c;…

OpenStack_I版 1.准备过程

openstack是一个开源云平台&#xff0c;python开发此次部署为实验环境&#xff0c; 采用扁平化简单的网络架构部署  优点&#xff1a;低耦合的&#xff0c;模块化Nova 计算资源池Glance 镜像服务Swift 对象存储Horizon 对计算资源&#xff0c;网络资源起别…

使用React和Tailwind CSS搭建项目框架

众所周知&#xff0c;Tailwind CSS框架越来越流行&#xff0c;所以我决定尝试学习并使用Tailwind CSS来搭建一个项目模板&#xff0c;一方面自己深入学习下&#xff0c;二来帮助新人更快地上手Tailwind CSS开发。 创建一个React项目 通过使用create-react-app命令创建一个新的…

快点,再快点!

现在看视频不来个两倍速&#xff08;或者更快&#xff09;都觉得在浪费生命。特别是在看视频教程的时候&#xff0c;文字我们可以做到一目十行&#xff0c;但是视频呢&#xff0c;如果有字幕&#xff0c;我们甚至不用听清&#xff0c;用3倍速或者4倍速完全没有问题&#xff0c;…

jetty eclipse_3个步骤实现Jetty和Eclipse集成

jetty eclipse本教程将引导您逐步了解如何集成Jetty和Eclipse&#xff0c;以及如何在Eclipse中的Jetty服务器上运行Web应用程序。 脚步&#xff1a; 安装Jetty Eclipse插件 建立网路应用程式 运行网络应用 1 –安装Jetty Eclipse插件 将服务器添加到“服务器”视图时&…

01jquey基础

1.html代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <script type"text/javascript" src"jquery-3.2.1.min.js"></script> <script type"tex…

使用React和Tailwind CSS搭建项目模板

公众号关注 “太空编程”设为 “星标”&#xff0c;带你了解硬核的编程知识&#xff01;众所周知&#xff0c;Tailwind CSS框架越来越流行&#xff0c;所以我决定尝试学习并使用Tailwind CSS来搭建一个项目模板&#xff0c;一方面自己深入学习下&#xff0c;二来帮助新人更快地…

Java用Java编译

在上一篇文章中&#xff0c;我写了关于如何在运行时生成代理的信息&#xff0c;我们已经了解到生成Java源代码的程度。 但是&#xff0c;要使用该类&#xff0c;必须对其进行编译&#xff0c;并将生成的字节码加载到内存中。 那是“编译”时间。 幸运的是&#xff0c;从Java 1.…

PHP实现前台页面与MySQL的数据绑定、同步更新

今天我来给大家介绍一个PHP-MySQL的小项目。 使用 PHP和前台Ajax 实现在前台对MySQL数据库中数据的增、删等操作语句功能。 如果有问题&#xff0c;欢迎拍砖~ 有不懂的地方&#xff0c;提出来咱们一起探讨~ 首先&#xff0c;我们先做好前台HTML、CSS样式&#xff0c;代码如下&a…

如何用Vue实现简易的富文本编辑器,并支持Markdown语法

前端开发经常会用到富文本编辑器&#xff0c;比如CKEditor&#xff0c;动不动一个库几十M的代码量&#xff0c;其中涉及许多你可能用不到的功能特性和相关设置&#xff0c;CKEditor最新版本的代码仓库就有接近2000个JS文件&#xff0c;300,000行代码。 可是如果你只需要一个简…

互联网基建成果,快速实现一个clubhouse要多久

最近国外的一款基于语音的社交软件clubhouse掀起了一股热潮&#xff0c;尤其是在Eleon Musk的带动下&#xff0c;整个互联网圈内人都在第一时间抢先体验。不管它为什么会火&#xff0c;肯定不是技术上有什么特别的优势。随着整个互联网技术生态的不断发展&#xff0c;互联网基础…

阿里帝国到底有多庞大

马云&#xff0c;男&#xff0c;1964年9月10日生于浙江省杭州市&#xff0c;祖籍浙江省嵊州市谷来镇&#xff0c; 阿里巴巴集团主要创始人&#xff0c;现担任阿里巴巴集团董事局主席、日本软银董事、TNC中国理事会主席兼全球董事会成员、华谊兄弟董事、生命科学突破奖基金会董事…