ant-bak 2010-07-10

本文详细介绍了一种用于Java项目的构建工具Ant。通过Ant可以自动化完成Java项目的编译、打包及部署等任务,支持创建复杂的构建过程并能很好地与其他工具集成。文章深入介绍了Ant的基本配置、常用任务(target)以及如何使用它来简化开发流程。

<?xml version="1.0" encoding="UTF-8"?>

<project name="springapp" basedir="." default="compile">
    <property environment="SystemVariable" />
    <property file="build.properties" />


    <path id="master-classpath">
        <fileset dir="${web.dir}/WEB-INF/lib">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${server.lib}">
            <include name="servlet*.jar" />
        </fileset>
        <pathelement path="${build.dir}" />
    </path>

    <target name="create.build.dir">
        <mkdir dir="${build.dir}" />
    </target>
    <target name="remove.build.dir">
        <delete includeemptydirs="true">
            <fileset dir="${build.dir}" />
        </delete>
    </target>

    <target name="compile" depends="">
        <javac destdir="${build.dir}" encoding="UTF-8" debug="true" deprecation="true" optimize="true" failonerror="true">
            <src path="${src.dir}" />
            <classpath refid="master-classpath" />
        </javac>
    </target>

    <target name="build">
        <jar destfile="WEB-INF/lib/custom-lib.jar" basedir="${build.dir}">
            <manifest>
                <attribute name="Build-By" value="${author}" />
            </manifest>
        </jar>
    </target>

    <target name="deploy" depends="build" description="Deploy application">
        <copy todir="${deploy.path}/${name}" preservelastmodified="true">
            <fileset dir="${web.dir}">


                <include name="**/*.*" />
            </fileset>
        </copy>
    </target>

    <target name="deploywar" depends="build,delete.war.file" description="Deploy application as a WAR file">
        <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
            <fileset dir="${web.dir}">
                <include name="**/*.*" />
            </fileset>
        </war>

        <copy todir="${deploy.path}" preservelastmodified="true">
            <fileset dir=".">
                <include name="*.war" />
            </fileset>
        </copy>
    </target>

    <target name="delete.war.file">
        <echo message="delete deploy war file" />
        <delete file="${deploy.path}/${name}.war" />
    </target>

    <target name="delete.war.dir">
        <echo message="delete deploy dir" />
        <delete dir="${deploy.path}/${name}" />
    </target>

</project>

 

=======================================================================


author=taink
server.home=${SystemVariable.TOMCAT_HOME}
server.lib=${server.home}/lib
src.dir=src
web.dir=WebContent
build.dir=classes
projectname=mvc
deploy.path=${server.home}/webapps

=======================================================================

 

<?xml version="1.0" encoding="UTF-8"?>

<project name="springapp" basedir="." default="deploy">
    <property environment="SystemVariable" />
    <property file="build.properties" />
    <property name="author" value="taink" />
    <tstamp>
        <format property="dstamp" pattern="MM-dd-yyyy HH:mm:ss" />
    </tstamp>

    <path id="master-classpath">
        <fileset dir="${web.dir}/WEB-INF/lib">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${server.lib}">
            <include name="servlet*.jar" />
        </fileset>
        <pathelement path="${build.dir}" />
    </path>

    <target name="compile" description="compile , compression jar file">
        <javac destdir="../mvc-model/bin" srcdir="../mvc-model/src" debug="ture" encoding="UTF-8" />
        <jar destfile="${web.dir}/WEB-INF/lib/mvc.jar" basedir="../mvc-model/bin">
            <manifest>
                <attribute name="Build-Date" value="${dstamp}" />
                <attribute name="Build-By" value="${user.name}" />
            </manifest>
        </jar>
    </target>

    <target name="deploy" depends="compile,delete.war.file">
        <war destfile="${projectname}.war" webxml="${web.dir}/WEB-INF/web.xml">
            <fileset dir="${web.dir}">
                <include name="**/*.*" />
            </fileset>
        </war>
        <copy todir="${deploy.path}">
            <fileset dir=".">
                <include name="*.war" />
            </fileset>
        </copy>
    </target>

    <target name="delete.war.file">
        <echo message="delete deploy war file" />
        <delete file="${deploy.path}/${projectname}.war" />
    </target>

    <target name="delete.war.dir">
        <echo message="delete deploy dir" />
        <delete dir="${deploy.path}/${projectname}" />
    </target>

</project>

#!/bin/bash # 下载包的目录 SOURCE_DIR="/root/a" #需发包的文件名 FILE_LIST="file_list.txt" #生成的发包ant命令 OUTPUT_FILE="11.txt" # 创建正式包的备份目录 backup_dir="backup_$(date '+%Y%m%d')" mkdir -p "$backup_dir" # EJB子目录与构建文件的映射 declare -A EJB_MAPPING=( ["LkmAgvEjbs.ear"]="agv.xml" ["LkmBiEjbs.ear"]="bi.xml" ["LkmBoardEjbs.ear"]="board.xml" ["LkmCommonEjbs.ear"]="commejb.xml" ["LkmConvertEjbs.ear"]="convert.xml" ["LkmDataSwitch.ear"]="dataswitch.xml" ["LkmDatatransfer.ear"]="datatrans.xml" ["LkmFopEjbs.ear"]="fopejb.xml" ["LkmJmsEjbs.ear"]="jmsejb.xml" ["LkmMachineEjbs.ear"]="machine.xml" ["LkmNcEjbs.ear"]="ncejb.xml" ["LkmOrderEjbs.ear"]="order.xml" ["LkmPlatformEjbs.ear"]="platform.xml" ["LkmPoiEjbs.ear"]="poiejb.xml" ["LkmPrintEjbs.ear"]="print.xml" ["LkmProgramEjbs.ear"]="program.xml" ["LkmQcEjbs.ear"]="qc.xml" ["LkmQuoteEjbs.ear"]="quoteejb.xml" ["LkmToolEjbs.ear"]="tool.xml" ["LkmUmsEjbs.ear"]="umsejb.xml" ["WorkTimeEjbs.ear"]="worktime.xml" ) # 主目录与构建文件的映射 declare -A MAIN_MAPPING=( ["jsf_apps"]="pmi.xml" ["restful_apps"]="rest.xml" ["shared_library"]="remote.xml" ) # 检查前置条件 check_prerequisites() { if [ ! -f "$FILE_LIST" ]; then echo "错误: 文件列表 $FILE_LIST 不存在" exit 1 fi if [ ! -d "$SOURCE_DIR" ]; then echo "错误: 源目录 $SOURCE_DIR 不存在" exit 1 fi } # 生成Ant命令 generate_ant_command() { local filename="$1" local location="$2" case "$location" in ejb_apps/LkmAgvEjbs.ear) echo "ant -f agv.xml -Djar=$filename" ;; ejb_apps/LkmBiEjbs.ear) echo "ant -f bi.xml -Djar=$filename" ;; ejb_apps/LkmBoardEjbs.ear) echo "ant -f board.xml -Djar=$filename" ;; ejb_apps/LkmCommonEjbs.ear) echo "ant -f commejb.xml -Djar=$filename" ;; ejb_apps/LkmConvertEjbs.ear) echo "ant -f convert.xml -Djar=$filename" ;; ejb_apps/LkmDataSwitch.ear) echo "ant -f dataswitch.xml -Djar=$filename" ;; ejb_apps/LkmDatatransfer.ear) echo "ant -f datatrans.xml -Djar=$filename" ;; ejb_apps/LkmFopEjbs.ear) echo "ant -f fopejb.xml -Djar=$filename" ;; ejb_apps/LkmJmsEjbs.ear) echo "ant -f jmsejb.xml -Djar=$filename" ;; ejb_apps/LkmMachineEjbs.ear) echo "ant -f machine.xml -Djar=$filename" ;; ejb_apps/LkmNcEjbs.ear) echo "ant -f ncejb.xml -Djar=$filename" ;; ejb_apps/LkmOrderEjbs.ear) echo "ant -f order.xml -Djar=$filename" ;; ejb_apps/LkmPlatformEjbs.ear) echo "ant -f platform.xml -Djar=$filename" ;; ejb_apps/LkmPoiEjbs.ear) echo "ant -f poiejb.xml -Djar=$filename" ;; ejb_apps/LkmPrintEjbs.ear) echo "ant -f print.xml -Djar=$filename" ;; ejb_apps/LkmProgramEjbs.ear) echo "ant -f program.xml -Djar=$filename" ;; ejb_apps/LkmQcEjbs.ear) echo "ant -f qc.xml -Djar=$filename" ;; ejb_apps/LkmQuoteEjbs.ear) echo "ant -f quoteejb.xml -Djar=$filename" ;; ejb_apps/LkmToolEjbs.ear) echo "ant -f tool.xml -Djar=$filename" ;; ejb_apps/LkmUmsEjbs.ear) echo "ant -f umsejb.xml -Djar=$filename" ;; ejb_apps/WorkTimeEjbs.ear) echo "ant -f worktime.xml -Djar=$filename" ;; jsf_apps) echo "ant -f pmi.xml -Djar=$filename" ;; restful_apps) echo "ant -f rest.xml -Djar=$filename" ;; shared_library) echo "ant -f remote.xml -Djar=$filename" ;; *) echo "# 未知位置: $location" ;; esac } # 同步单个文件 sync_single_file() { local filename="$1" local source_file="$SOURCE_DIR/$filename" echo "处理文件: $filename" local ant_commands=() local found_in_ejb=false # 优先在EJB子目录中查找(限制深度2层) for subdir in "${!EJB_MAPPING[@]}"; do local target_path="ejb_apps/$subdir/$filename" if [ -f "$target_path" ]; then # 备份原文件 cp "$target_path" "$backup_dir/" 2>/dev/null # 覆盖文件 cp "$source_file" "$target_path" ant_commands+=("$(generate_ant_command "$filename" "ejb_apps/$subdir")") echo " ✓ 已覆盖到: ejb_apps/$subdir" found_in_ejb=true fi done # 如果在EJB子目录中没找到,再在jsf目录中查找(限制深度2层) if [ "$found_in_ejb" = false ]; then for maindir in "${!MAIN_MAPPING[@]}"; do local target_path="jsf_apps/LkmPmi.ear/LkmPmi.war/WEB-INF/lib/$filename" if [ -f "$target_path" ]; then # 备份原文件 cp "$target_path" "$backup_dir/" 2>/dev/null # 覆盖文件 cp "$source_file" "$target_path" ant_commands+=("$(generate_ant_command "$filename" "$maindir")") echo " ✓ 已覆盖到: $maindir" found_in_ejb=true fi done fi # 如果在jsf目录中没找到,再在restful目录中查找(限制深度2层) if [ "$found_in_ejb" = false ]; then for maindir in "${!MAIN_MAPPING[@]}"; do local target_path="restful_apps/LkmRestful.ear/LkmRestful.war/WEB-INF/lib/$filename" if [ -f "$target_path" ]; then # 备份原文件 cp "$target_path" "$backup_dir/" 2>/dev/null # 覆盖文件 cp "$source_file" "$target_path" ant_commands+=("$(generate_ant_command "$filename" "$maindir")") echo " ✓ 已覆盖到: $maindir" found_in_ejb=true fi done fi # 如果在restful目录中没找到,再在shared_library目录中查找(限制深度2层) if [ "$found_in_ejb" = false ]; then for maindir in "${!MAIN_MAPPING[@]}"; do local target_path="shared_library/lkm.ejb.remote.ear/APP-INF\lib/$filename" if [ -f "$target_path" ]; then # 备份原文件 cp "$target_path" "$backup_dir/" 2>/dev/null # 覆盖文件 cp "$source_file" "$target_path" ant_commands+=("$(generate_ant_command "$filename" "$maindir")") echo " ✓ 已覆盖到: $maindir" fi done fi # 将生成的Ant命令写入11.txt for cmd in "${ant_commands[@]}"; do echo "$cmd" >> "$OUTPUT_FILE" done if [ ${#ant_commands[@]} -eq 0 ]; then echo " ❌ 未找到在四个目录中" else echo " ✅ 生成 ${#ant_commands[@]} 个构建命令" fi echo "----------------------------------------" } # 主函数 main() { check_prerequisites # 清空输出文件 > "$OUTPUT_FILE" echo "开始增强版文件同步任务(目录深度限制: 2层)" echo "源目录: $SOURCE_DIR" echo "" local total_files=0 # 读取文件列表并处理 while IFS= read -r filename; do if [[ -z "$filename" || "$filename" =~ ^# ]]; then continue fi filename=$(echo "$filename" | tr -d '\r' | xargs) ((total_files++)) sync_single_file "$filename" echo "" done < "$FILE_LIST" echo "========================================" echo "增强版同步任务完成!" echo "处理文件数: $total_files" echo "构建命令已保存到: $OUTPUT_FILE" } main "$@" <code_end>
11-19
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频与稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模与扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为与失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材与原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环与电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值