四个实用的Windows命令
2008-08-19 21:40
246 查看
M
aven archetype 是 Maven Archetype Plugin 用来生成一套 Maven 项目的模板。使用该插件可以非常轻松的创建一个项目, 仅仅需要执行一个命令, 以创建一个简单的 webapp 项目为例:
命令会产生一个目录: myapp, 结构如下:
下面解释下命令的参数:
mvn archetype:generate, 执行 generate goal。 若要看详细说明,可以运行命令: mvn archetype:help -Ddetail=true -Dgoal=generate
-B Batch mode, 与其相反的是默认的交互模式。当云行指令: mvn archetype:generate 没有任何参数时, Maven 会启用交互模式, 同时会列出所有已知的 ArcheType 供你选择。
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-webapp
-DarchetypeVersion=1.0 以上三个参数指定了具体使用哪个 archetype 做为生成当前项目的模板
-DgroupId=com.mycompany.webapp
-DartifactId=myapp
-Dversion=1.0 以上三个参数指定了你要创建项目的 groupId 和 artifactId, version。如果你在模板(使用 velocity)文件中定义了其他变量,需要先在 archetype-metadata.xml 文件中指定,之后通过 -DvarName=value 的方式传入。详见下面的例子。
创建好了我们这个工程, 我们仅仅需要执行:
就能得到一个 myapp.war。
使用 maven archetype 的好处显而易见,那就是快速创建工程,不需要一个个文件的创建, 更不许要去写很多 build 脚本。很多人喜欢用 ant + ivy 做为 build 的脚本,因为 ant 是 100% 自由,随意定义 target 和task, 而不像 Maven 给定死了很多 build 中的 phrase, 想做个扩展,还需要开发个 Mojo。但是, 当 Mojo 越来越多,你就发现 Maven 的价值了。 Ant 适合一个工程, 而 Maven 考虑的是一系列的工程。
在上面的那个例子里,我使用的 archetype 是通过 archetypeGroupId, archetypeArtifactId, archetypeVersion 来指定的,那么我是怎么知道这个 archetype 呢? 怎样才知道有哪些 Archetype 可以使用呢?这就需要 Archetype Catalog了。
我们上面提到过, 如果执行命令: mvn archetype:generate 不带参数的时候, Maven 会自动列出很多可用的 Archetype 供你选择, 这个列表实际上是从一个 XML 文件解析出来的, 叫做: archetype-catalog.xml, 默认是先后从: http://repo1.maven.org/maven2/archetype-catalog.xml
, ~/.m2/repository/archetype-catalog.xml 获取。这个 archetype-catalog.xml 就是 archetype catalog, 其定义了当前 repository 里可用的 archetype 列表。我们大概看下这个 xml 文件的内容:
其中:
<archetype> 定义一个 archetype
<groupId> 定义 archetype 的 groupId
<artifactId> 定义 archetype 的 artifactId
<version> 定义 archetype 的 version
<description> 说明了该 archetype 的用处。
每个 Maven repository 都有自己的 archetype catalog 文件, 默认路经是: <Maven Repository URL>/archetype-catalog.xml。 在运行 mvn archetype:generate 的时候,我们可以通过指定 -DarchetypeCatalog=<Catalog Name or URL> 使用任意 Maven repository 下的 archetype-catalog。 Maven archetype plugin 还提供了几个 goals 用来更新本地的 archetype catalog。 具体请运行 mvn archetype:help 查看。
虽然上面的例子很简单的创建了一个 webapp 的 war, 但是它过于简单了, 连个 servlet 都没有,也不是最新 Servlet 3 的规范。当已知的 archetype 不能满足你的要求的时候,你可以自己创建一个。
下面我们创建个 maven-archetype-webapp-servlet3 的 archetype 用来生成基于 Servlet 3 的简单的 webapp:
我们先看一下这个 archetype 的目录结构:
其中:
# 1,这是个 archetype 的 pom,用来生成一个 archetype。
# 2,这个是 archetype 需要的目录结构。
# 3,这个是 prototype 的 pom。 当使用该 archetype 生成一个项目的时候, 这个 pom 作为生成项目的 root pom。
# 4,这个是 archetype 的描述文件, 主要描述生成项目的时候怎么 copy 文件和目录。
我们主要看下 archetype-metadata.xml 总的内容:
它的格式非常直白,requiredProperties/requiredProperty 指需要定义的属性名字, 可以有默认值,通过命令行中的 -DvarName=value 方式传入。在模板文件中 ${varName} 引用。 fileSets/fileSet 指定一个目录, 如果 filtered=true, 那么Maven把所有的文件作为 velocity 模板文件对待。 如果 packaged=true, 那么将会把该目录 copy 到项目的 package 对应的目录下。encoding=UTF-8 指定采用 UTF-8 编码。
其他文件内容,可以查看附件。
当我们建好了这个 archetype 后, 运行指令: mvn install 安装在本地的 repository 下, 就可以使用了。 因为 mvn archetype:generate 默认到 repo1.maven.org/maven2/ 上寻找 archetype, 我们需要额外增加一个参数:
-DarchetypeRepository=local, 整个的命令为:
之后运行: cd myapp; mvn package
如果本机正运行着 JBoss AS 7, 可以采用指令: ./jboss-admin.sh --connect --command="deploy .../target/myapp.war" 进行部署。非常简单快捷。
有关 JBoss AS 7 的文章, 推荐阅读 http://jbosscn.iteye.com
aven archetype 是 Maven Archetype Plugin 用来生成一套 Maven 项目的模板。使用该插件可以非常轻松的创建一个项目, 仅仅需要执行一个命令, 以创建一个简单的 webapp 项目为例:
mvn archetype:generate \ -B \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-webapp \ -DarchetypeVersion=1.0 \ -DgroupId=com.mycompany.webapp \ -DartifactId=myapp \ -Dversion=1.0
命令会产生一个目录: myapp, 结构如下:
|-- pom.xml `-- src `-- main |-- resources `-- webapp |-- index.jsp `-- WEB-INF `-- web.xml
下面解释下命令的参数:
mvn archetype:generate, 执行 generate goal。 若要看详细说明,可以运行命令: mvn archetype:help -Ddetail=true -Dgoal=generate
-B Batch mode, 与其相反的是默认的交互模式。当云行指令: mvn archetype:generate 没有任何参数时, Maven 会启用交互模式, 同时会列出所有已知的 ArcheType 供你选择。
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-webapp
-DarchetypeVersion=1.0 以上三个参数指定了具体使用哪个 archetype 做为生成当前项目的模板
-DgroupId=com.mycompany.webapp
-DartifactId=myapp
-Dversion=1.0 以上三个参数指定了你要创建项目的 groupId 和 artifactId, version。如果你在模板(使用 velocity)文件中定义了其他变量,需要先在 archetype-metadata.xml 文件中指定,之后通过 -DvarName=value 的方式传入。详见下面的例子。
创建好了我们这个工程, 我们仅仅需要执行:
cd myapp mvn package
就能得到一个 myapp.war。
使用 maven archetype 的好处显而易见,那就是快速创建工程,不需要一个个文件的创建, 更不许要去写很多 build 脚本。很多人喜欢用 ant + ivy 做为 build 的脚本,因为 ant 是 100% 自由,随意定义 target 和task, 而不像 Maven 给定死了很多 build 中的 phrase, 想做个扩展,还需要开发个 Mojo。但是, 当 Mojo 越来越多,你就发现 Maven 的价值了。 Ant 适合一个工程, 而 Maven 考虑的是一系列的工程。
在上面的那个例子里,我使用的 archetype 是通过 archetypeGroupId, archetypeArtifactId, archetypeVersion 来指定的,那么我是怎么知道这个 archetype 呢? 怎样才知道有哪些 Archetype 可以使用呢?这就需要 Archetype Catalog了。
我们上面提到过, 如果执行命令: mvn archetype:generate 不带参数的时候, Maven 会自动列出很多可用的 Archetype 供你选择, 这个列表实际上是从一个 XML 文件解析出来的, 叫做: archetype-catalog.xml, 默认是先后从: http://repo1.maven.org/maven2/archetype-catalog.xml
, ~/.m2/repository/archetype-catalog.xml 获取。这个 archetype-catalog.xml 就是 archetype catalog, 其定义了当前 repository 里可用的 archetype 列表。我们大概看下这个 xml 文件的内容:
<?xml version="1.0" encoding="UTF-8"?> <archetype-catalog> <archetypes> <archetype> <groupId>com.agilejava.docbkx</groupId> <artifactId>docbkx-quickstart-archetype</artifactId> <version>2.0.13</version> </archetype> ... <archetype> <groupId>org.apache.maven.archetypes</groupId> <artifactId>maven-archetype-webapp</artifactId> <version>1.0</version> <description>An archetype which contains a sample Maven Webapp project.</description> </archetype> ... </archetypes> </archetype-catalog>
其中:
<archetype> 定义一个 archetype
<groupId> 定义 archetype 的 groupId
<artifactId> 定义 archetype 的 artifactId
<version> 定义 archetype 的 version
<description> 说明了该 archetype 的用处。
每个 Maven repository 都有自己的 archetype catalog 文件, 默认路经是: <Maven Repository URL>/archetype-catalog.xml。 在运行 mvn archetype:generate 的时候,我们可以通过指定 -DarchetypeCatalog=<Catalog Name or URL> 使用任意 Maven repository 下的 archetype-catalog。 Maven archetype plugin 还提供了几个 goals 用来更新本地的 archetype catalog。 具体请运行 mvn archetype:help 查看。
虽然上面的例子很简单的创建了一个 webapp 的 war, 但是它过于简单了, 连个 servlet 都没有,也不是最新 Servlet 3 的规范。当已知的 archetype 不能满足你的要求的时候,你可以自己创建一个。
下面我们创建个 maven-archetype-webapp-servlet3 的 archetype 用来生成基于 Servlet 3 的简单的 webapp:
我们先看一下这个 archetype 的目录结构:
|-- pom.xml # 1 `-- src `-- main `-- resources |-- archetype-resources # 2 | |-- pom.xml # 3 | `-- src | `-- main | |-- java | | `-- HelloWorldServlet.java | `-- webapp | |-- index.jsp | `-- WEB-INF | `-- web.xml `-- META-INF `-- maven # 2 `-- archetype-metadata.xml # 4
其中:
# 1,这是个 archetype 的 pom,用来生成一个 archetype。
# 2,这个是 archetype 需要的目录结构。
# 3,这个是 prototype 的 pom。 当使用该 archetype 生成一个项目的时候, 这个 pom 作为生成项目的 root pom。
# 4,这个是 archetype 的描述文件, 主要描述生成项目的时候怎么 copy 文件和目录。
我们主要看下 archetype-metadata.xml 总的内容:
<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="servlet 3 webapp" partial="false" > <requiredProperties> <requiredProperty key="description" > </requiredProperty> </requiredProperties> <fileSets> <fileSet filtered="true" packaged="true" encoding="UTF-8" > <directory>src/main/java/</directory> </fileSet> <fileSet filtered="true" packaged="false" encoding="UTF-8" > <directory>src/main/webapp/</directory> </fileSet> </fileSets> </archetype-descriptor>
它的格式非常直白,requiredProperties/requiredProperty 指需要定义的属性名字, 可以有默认值,通过命令行中的 -DvarName=value 方式传入。在模板文件中 ${varName} 引用。 fileSets/fileSet 指定一个目录, 如果 filtered=true, 那么Maven把所有的文件作为 velocity 模板文件对待。 如果 packaged=true, 那么将会把该目录 copy 到项目的 package 对应的目录下。encoding=UTF-8 指定采用 UTF-8 编码。
其他文件内容,可以查看附件。
当我们建好了这个 archetype 后, 运行指令: mvn install 安装在本地的 repository 下, 就可以使用了。 因为 mvn archetype:generate 默认到 repo1.maven.org/maven2/ 上寻找 archetype, 我们需要额外增加一个参数:
-DarchetypeRepository=local, 整个的命令为:
mvn archetype:generate \ -B \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-webapp-servlet3 \ -DarchetypeVersion=1.0 \ -DarchetypeRepository=local \ -DgroupId=com.mycompany.webapp \ -DartifactId=myapp \ -Dversion=1.0 \ -Ddescription=Hello Servlet 3
之后运行: cd myapp; mvn package
如果本机正运行着 JBoss AS 7, 可以采用指令: ./jboss-admin.sh --connect --command="deploy .../target/myapp.war" 进行部署。非常简单快捷。
有关 JBoss AS 7 的文章, 推荐阅读 http://jbosscn.iteye.com
相关文章推荐
- 四个强大且实用的Windows命令
- Windows内网渗透提权的几个实用命令
- 实用的windows命令,慢慢积累吧!
- Windows内网渗透提权的几个实用命令 以及 Linux系统信息查看命令
- 实用小命令-windows下查看端口占用情况
- (转载)实用小命令 -- windows下查看端口占用情况
- Windows一些实用命令
- Windows系统实用命令
- Windows内网渗透提权的几个实用命令
- windows实用命令
- 实用小命令-windows下查看端口占用情况
- Windows内网渗透提权的几个实用命令
- windows常用命令以及快捷键大全【实用】
- 四个实用的网络管理系统命令
- Windows内网渗透提权的几个实用命令
- 实用的windows命令,慢慢积累吧!
- 非常实用的windows运行打开服务命令
- Windows 实用系统管理命令
- Windows实用命令
- 一些linux和windows实用的命令