我正在使用以下Ant脚本来创建一个简单的Web应用程序之战。
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="war">
<path id="compile.classpath">
<fileset dir="WebContent/WEB-INF/lib">
<include name="*.jar" />
</fileset>
</path>
<target name="compile">
<javac destdir="WebContent/WEB-INF/classes" debug="true" srcdir="src">
<classpath refid="compile.classpath" />
</javac>
</target>
<target name="war" depends="compile">
<war destfile="build/myproject.war" webxml="WebContent/WEB-INF/web.xml">
<fileset dir="WebContent">
<include name="**/*.jsp" />
</fileset>
<lib dir="WebContent/WEB-INF/lib" />
<classes dir="WebContent/WEB-INF/classes" />
</war>
</target>
</project>
它正在创造战争,但是当我打开战争时,由于哪个应用程序没有运行,它不包含JSP文件。知道什么是错的吗? 此外,我现在正在Weblogic手动应对战争。是否有可以部署战争的Ant命令?
答案 0 :(得分:1)
我不知道确切的答案,但这是我使用Ant build.xml进行webapps的方式。试试看。这适用于Eclipse内部或从命令行运行。关键点很少:
将此常用文件夹结构用于webapp项目
/mywebapp/ant.bat
/mywebapp/build.xml
/ mywebapp /类/
/ mywebapp / SRC /
/mywebapp/src/META-INF/MANIFEST.MF
/ mywebapp / LIB /
/ mywebapp / WEB /
/mywebapp/web/WEB-INF/web.xml
/ mywebapp / WEB / WEB-INF / lib目录/
/mywebapp/web/META-INF/context.xml
<强> mywebapp / build.xml中强>
<?xml version="1.0" encoding="UTF-8"?>
<project name="mywebapp" default="build" basedir=".">
<property name="name" value="${ant.project.name}" />
<property name="classes" value="./classes" />
<property name="src" value="./src" />
<property name="webdir" value="./web" />
<property name="version" value="1.0"/>
<property environment="env"/>
<path id="libs">
<pathelement location="lib/servlet-api.jar" />
<pathelement location="web/WEB-INF/lib/somelib1.jar" />
<pathelement location="web/WEB-INF/lib/somelib2.jar" />
<pathelement location="web/WEB-INF/lib/gson-2.2.4.jar" />
</path>
<tstamp>
<format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<target name="updatemanifest" description="Update manifest">
<buildnumber file="build.num"/>
<copy file="${src}/META-INF/MANIFEST.MF"
todir="${classes}/META-INF/" overwrite="true" preservelastmodified="true"
/>
<manifest file="${classes}/META-INF/MANIFEST.MF" mode="update">
<attribute name="Implementation-Version" value="${version}.${build.number} (${TODAY})" />
<attribute name="Implementation-Title" value="${name}" />
</manifest>
</target>
<target name="clean" description="Clean compiled classes">
<delete dir="${classes}" />
</target>
<target name="compile" depends="clean" description="Compile classes">
<mkdir dir="${classes}"/>
<javac srcdir="${src}" destdir="${classes}" target="1.6" source="1.6" encoding="ISO-8859-1"
debug="true" debuglevel="lines,source"
excludes="" includeantruntime="false" >
<classpath refid="libs" />
<compilerarg value="-Xlint:deprecation" />
</javac>
</target>
<target name="jar" depends="updatemanifest" description="Create a .jar file">
<echo message="Build release: ${release}" />
<jar
manifest="${classes}/META-INF/MANIFEST.MF"
jarfile="${webdir}/WEB-INF/lib/${name}.jar" >
<fileset dir="${classes}">
</fileset>
</jar>
</target>
<target name="war" depends="compile,jar" description="Create a .war file">
<delete file="${name}.war" />
<zip destfile="${name}.war"
basedir="${webdir}"
excludes="
**/CVS*
"
/>
</target>
<target name="build" depends="war" description="Build lib">
</target>
</project>
<强>的src / META-INF / MANIFEST.MF 强>
Implementation-Title: myappname
Implementation-Version: 1.0.0 (2010-03-01)
Implementation-Vendor: My Name Ltd.
Implementation-URL: http://www.myname.com
<强> mywebapp /的build.bat 强>
call c:\apache-ant-1.7.0\bin\ant.bat build
pause
构建脚本创建war包,并在web-inf / lib / mywebapp.jar中更新manifest.mf以具有内部版本号,标题和版本。非常方便您可以使用文件夹内容作为新webapp项目的模板。只需编辑build.xml即可获得新的项目名称。
某些编译时依赖项指向mywebapp / web-inf / lib文件夹。非war包装的库仅在编译时放入mywebapp / lib /文件夹。我喜欢在项目版本控制中保持每个依赖项,这就是这个lib文件夹的原因。您可以使用* .jar通配符蚂蚁语法,但我明确列出每个文件以用于自我文档目的。
这是在开发期间在Tomcat中使用的奖励文件。它在Tomcat上发布webapp,并立即看到项目文件夹中的任何更改,它非常方便客户端文件更改(html,js,jsp)。
<强>的Tomcat / CONF /卡塔利娜/本地主机/ mywebapp.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/mywebapp/web"
debug="0" reloadable="true" crossContext="true" >
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1" />
-->
<!--
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->
<!-- pooled db connection -->
<Resource name="jdbc/mywebappDB" auth="Container" type="javax.sql.DataSource"
maxActive="10" maxIdle="2" maxWait="20000"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
username="myuserid" password="mypwd"
url="jdbc:sqlserver://mysqlserv1.com:1433;DatabaseName=MyDB;applicationName=mywebapp"
validationQuery="SELECT 1"
/>
<!-- <ResourceLink name="jdbc/mywebappDB" global="jdbc/mywebappDB" type="javax.sql.DataSource" /> -->
<Resource name="jdbc/mywebappDB2" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="20" maxWait="10000"
driverClassName="com.mysql.jdbc.Driver"
username="myuserid" password="mypwd"
url="jdbc:mysql://localhost:3306/myDB2?useUnicode=true&characterEncoding=utf8"
validationQuery="SELECT 1" removeAbandoned="true" removeAbandonedTimeout="300"
/>
</Context>
ps:无论有人说什么,Ant构建系统都很好。随你随心所欲。