如何使用ant脚本在远程weblogic服务器中部署配置文件、JAR和ear文件

如何使用ant脚本在远程weblogic服务器中部署配置文件、JAR和ear文件,ant,weblogic12c,Ant,Weblogic12c,我想使用ant脚本在远程weblogic服务器上部署jar文件、配置文件和生成的ear文件 我创建了一个ant脚本,用于停止weblogic服务器、删除旧文件(jar、配置xml文件、ear)并将给定的源复制到目标,当源和目标都在同一台机器上时,该脚本可以工作 <project name="Svn" default="startserver"> <property name="bea.home" value="C:/Oracle/Middleware/Oracle_Home"

我想使用ant脚本在远程weblogic服务器上部署jar文件、配置文件和生成的ear文件

我创建了一个ant脚本,用于停止weblogic服务器、删除旧文件(jar、配置xml文件、ear)并将给定的源复制到目标,当源和目标都在同一台机器上时,该脚本可以工作

<project name="Svn" default="startserver">
<property name="bea.home" value="C:/Oracle/Middleware/Oracle_Home" />
<property name="weblogic.home" value="${bea.home}/wlserver" />
<property name="domain.home" value="${bea.home}/user_projects/domains" />
<property name="domain.name" value="NAPF_domain" />
<property name="host" value="10.254.5.191" />
<property name="port" value="7001" />
<property name="username" value="weblogic" />
<property name="password" value="weblogic" />
<property name="admin.server.name" value="AdminServer" />
<property name="libdeploy.dir" value="${domain.home}/${domain.name}/lib/" />
<property name="configdeploy.dir" value="${domain.home}/${domain.name}/pf-appl/config/" />
<property name="eardeploy.dir" value="${domain.home}/${domain.name}/servers/AdminServer/upload/" />
<property name="libsource.dir" value="napf-main/napf-build/release/target/Release/lib/" />
<property name="configsource.dir" value="napf-main/napf-build/release/target/Release/config/" />
<property name="earsource.dir" value="napf-main/napf-build/release/target/Release/dist/" />
<property name="napfscutitysource.dir" value="napf-main/napf-security-lib" />
<property name="sourceMonitorHome" location="NAPF_SERVER_SOURCE/SourceMonitor"/>

<path id="wls.classpath">
    <fileset dir="${weblogic.home}/server/lib">
        <include name="web*.jar" />
    </fileset>
</path>
<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer" classpathref="wls.classpath" />
<target name="start-server">
    <wlserver dir="${domain.home}/${domain.name}" host="${host}" port="${port}" domainname="${domain.name}" servername="${admin.server.name}" action="start" username="${username}" password="${password}" beahome="${bea.home}" weblogichome="${weblogic.home}" verbose="true" noexit="true" protocol="t3" classpath="${weblogic.home}/server/lib/weblogic.jar">
        <jvmarg value="-server" />
        <jvmarg value="-Xms256m" />
        <jvmarg value="-Xmx512m" />
        <jvmarg value="-XX:PermSize=128m" />
        <jvmarg value="-XX:MaxPermSize=256m" />
    </wlserver>
    <sleep seconds="2" />
</target>
<target name="stop-server">
    <wlserver dir="${domain.home}/${domain.name}" host="${host}" port="${port}" servername="${admin.server.name}" username="${username}" password="${password}" action="shutdown" beahome="${bea.home}" weblogichome="${weblogic.home}" forceshutdown="true" />
</target>
<target name="purge-deploy" description="Delete old deploy files.">
    <echo message="Deleting old deploy files..." />
    <delete includeEmptyDirs="true">
        <!-- Delete all jar files  -->
        <fileset dir="${libdeploy.dir}" includes="**/*" />
        <!-- Delete all config files  -->
        <fileset dir="${configdeploy.dir}" includes="**/*" />
    </delete>
</target>
<target name="copyToSecurityLib" description="Copy files to napf security folder.">
    <copy todir="${libdeploy.dir}">
        <fileset dir="${napfscutitysource.dir}">
            <include name="**" />
            <!-- ignore files/folders starting with svn -->
            <exclude name="**/.svn" />
        </fileset>
    </copy>
</target>
<target name="copyToDeploy" description="Copy files to deploy folder.">
    <copy todir="${libdeploy.dir}">
        <fileset dir="${libsource.dir}">
            <include name="**" />
            <!-- ignore files/folders starting with svn -->
            <exclude name="**/.svn" />
        </fileset>
    </copy>
    <copy todir="${configdeploy.dir}">
        <fileset dir="${configsource.dir}">
            <include name="**" />
            <!-- ignore files/folders starting with svn -->
            <exclude name="**/.svn" />
        </fileset>
    </copy>
    <copy todir="${eardeploy.dir}">
        <fileset dir="${earsource.dir}">
            <include name="**" />
            <!-- ignore files/folders starting with svn -->
            <exclude name="**/.svn" />
        </fileset>
    </copy>
</target>

<target name="purgeReport" description="Delete old report files.">
    <echo message="Deleting old report files..." />
    <delete includeEmptyDirs="true">
        <fileset dir="${sourceMonitorHome}" includes="**/*.csv,*.jpeg,*.smp" />
    </delete>
</target>

<target name="startSourceMonitor">
    <exec dir="${sourceMonitorHome}" executable="cmd" failonerror="true" spawn="false">
      <arg value="/c"/>
      <arg value="sourcemonitor.bat"/>
    </exec>

</target>

<target name="copyReportFiles" description="Copy files to napf source directory to slave workspace directory.">
    <delete includeEmptyDirs="true">
        <fileset dir="${sourceMonitorWorkSpace}"/>
    </delete>
    <mkdir dir="${sourceMonitorWorkSpace}"/>
     <sleep seconds="1" />
    <copy todir="${sourceMonitorWorkSpace}">
        <fileset dir="${sourceMonitorHome}">
            <include name="**/*.csv" />
             <include name="**/*.jpeg" />
            <exclude name="**/.svn" />
        </fileset>
    </copy>
</target>


请建议。

您可以尝试wldeployAnt任务

首先,添加任务定义

<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy">
    <classpath>
        <pathelement location="${weblogic.home}/server/lib/weblogic.jar"/>
    </classpath>
</taskdef>

接下来,配置wldeploy任务的每个操作,例如部署、重新部署或取消部署

例如

<!-- The deployment name for the deployed application.
If you do not specify this attribute, WebLogic Server assigns a deployment name to the application, based on its archive file or exploded directory. -->
<property name="deploy.name" value="MyApp"/>
<!-- The archive file or exploded directory to deploy. -->
<property name="deploy.source" value="MyApp.ear"/>
<!-- The list of target servers to which the application is deployed.
The value of this attribute is a comma-separated list of the target servers, clusters, or virtual hosts.
If you do not specify a target list when deploying an application, the target defaults to the Administration Server instance. -->
<property name="deploy.targets" value="MyCluster"/>

<!-- Deploying Applications  -->
<target name="deploy">
<wldeploy action="deploy" 
          name="${deploy.name}"
          user="${username}"
          password="${password}"
          remote="true"
          adminurl="t3://${host}:${port}"
          source="${deploy.source}"
          targets="${deploy.targets}"/>
</target>

<!-- Redeploying Applications  -->
<target name="redeploy">
<wldeploy action="redeploy"
          name="${deploy.name}"
          user="${username}"
          password="${password}"
          remote="true"
          adminurl="t3://${host}:${port}"
          targets="${deploy.targets}"/>
</target>

<!-- Undeploying Applications  -->
<target name="undeploy">
<wldeploy action="undeploy"
          name="${deploy.name}"
          failonerror="false"
          user="${username}"
          password="${password}"
          remote="true"
          adminurl="t3://${host}:${port}" 
          targets="${deploy.targets}"/>
</target>

请注意,如果我们想将JAR或EAR部署到远程WebLogic服务器,我们必须显式地将wldeploy标记中的remote属性设置为true,因为默认值为false


有关该任务的更完整参考信息,请参见

如果您只是指定远程服务器文件路径,则上述任务将起作用。实际上,您需要两个参数,一个是远程参数,另一个是上传参数。 同样也可以,但是如果从远程服务器部署,我发现任务缺少一个参数

<target name="deploy1">
<wldeploy action="deploy"
      upload="true"
      remote="true"
          name="${deploy.name.1}"
          source="${deploy.source.1}"
          user="${wls.username}"
          password="${wls.password}"
          verbose="true"
          adminurl="t3://${wls.hostname}:${wls.port}" targets="${deploy.target}" />
</target>


谢谢Aprian。我已经尝试了上面的wldeploy Ant任务,但出现错误“找不到taskdef class weblogic.Ant.taskdefs.management.wldeploy”。我已经设置了类路径,谢谢您的反馈,Sameek。奇怪。WLDeploy类实际上应该存在于weblogic.jar中。请问您使用的是哪个版本的WebLogic?另外,您是否可以尝试为wldeploy任务定义特定的类路径?我已经更新了taskdef示例。我使用的是weblogic 12.2.1。我只是从我的客户位置在类路径中设置weblogic.jar和wldeploy.jar文件。如果我从以下位置C:/Oracle/Middleware/Oracle\u Home/wlserver/server/lib/加载jar,它会执行ant脚本。奇怪的行为……你知道吗?使用的设置: