新增章节 1.3
+YUCHENG HU+ git-svn-id: https://svn.code.sf.net/p/hawebs/svn@393 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
This commit is contained in:
@@ -60,6 +60,7 @@ h1, h2, h3 {
|
||||
p, ul, ol, dl {
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.8em;
|
||||
line-height: 1.6em;
|
||||
}
|
||||
ul, ol, dl {
|
||||
margin-left: 1.2em;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#Mon Jun 28 17:08:04 EDT 2010
|
||||
#Mon Jun 28 22:29:33 EDT 2010
|
||||
copytosourcelist=
|
||||
hreftargetslist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
hreftargetslist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
fullditatopicfile=fullditatopic.list
|
||||
fullditamapandtopicfile=fullditamapandtopic.list
|
||||
fullditatopiclist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
fullditamapandtopiclist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,definitive_guide.ditamap,tasks/info/hacopyright.dita
|
||||
fullditatopiclist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
fullditamapandtopiclist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,definitive_guide.ditamap,tasks/info/hacopyright.dita
|
||||
hrefditatopicfile=hrefditatopic.list
|
||||
hrefditatopiclist=tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
hrefditatopiclist=tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
user.input.file=definitive_guide.ditamap
|
||||
subtargetsfile=subtargets.list
|
||||
fullditamapfile=fullditamap.list
|
||||
@@ -27,7 +27,7 @@ imagelist=images/halogo.jpg
|
||||
htmlfile=html.list
|
||||
htmllist=
|
||||
canditopicsfile=canditopics.list
|
||||
canditopicslist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
canditopicslist=tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita
|
||||
keyreffile=keyref.list
|
||||
subjectschemefile=subjectscheme.list
|
||||
keyreflist=
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
SYSTEM "http://java.sun.com/dtd/properties.dtd">
|
||||
<properties>
|
||||
<entry key="copytosourcelist"></entry>
|
||||
<entry key="hreftargetslist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="hreftargetslist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="fullditatopicfile">fullditatopic.list</entry>
|
||||
<entry key="fullditamapandtopicfile">fullditamapandtopic.list</entry>
|
||||
<entry key="fullditatopiclist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="fullditamapandtopiclist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,definitive_guide.ditamap,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="fullditatopiclist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="fullditamapandtopiclist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,definitive_guide.ditamap,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="hrefditatopicfile">hrefditatopic.list</entry>
|
||||
<entry key="hrefditatopiclist">tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="hrefditatopiclist">tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="user.input.file">definitive_guide.ditamap</entry>
|
||||
<entry key="subtargetsfile">subtargets.list</entry>
|
||||
<entry key="fullditamapfile">fullditamap.list</entry>
|
||||
@@ -30,7 +30,7 @@
|
||||
<entry key="htmlfile">html.list</entry>
|
||||
<entry key="htmllist"></entry>
|
||||
<entry key="canditopicsfile">canditopics.list</entry>
|
||||
<entry key="canditopicslist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="canditopicslist">tasks/info/apachelicense.dita,tasks/chapter1/chapter1_1.dita,tasks/chapter1/chapter1.dita,tasks/chapter1/chapter1_3.dita,tasks/chapter1/chapter1_2.dita,tasks/info/hacopyright.dita</entry>
|
||||
<entry key="keyreffile">keyref.list</entry>
|
||||
<entry key="subjectschemefile">subjectscheme.list</entry>
|
||||
<entry key="keyreflist"></entry>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<meta name="keywords" content="Apache, Maven, 介绍"/>
|
||||
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter1/chapter1_1.html"/>
|
||||
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter1/chapter1_2.html"/>
|
||||
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter1/chapter1_3.html"/>
|
||||
<meta name="prodname" content="Maven权威指南"/>
|
||||
<meta name="version" content="1.0.0.0"/>
|
||||
<meta name="brand" content="HAWEBS Maven"/>
|
||||
@@ -40,6 +41,8 @@
|
||||
</li>
|
||||
<li class="ulchildlink"><strong><a href="../../tasks/chapter1/chapter1_2.html">约定优于配置(Convention Over Configuration)</a></strong><br/>
|
||||
</li>
|
||||
<li class="ulchildlink"><strong><a href="../../tasks/chapter1/chapter1_3.html">一个一般的接口</a></strong><br/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html lang="zh" xml:lang="zh">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta name="DC.Type" content="concept"/>
|
||||
<meta name="DC.Title" content="一个一般的接口"/>
|
||||
<meta name="DC.subject" content="Apache, Maven, 介绍"/>
|
||||
<meta name="keywords" content="Apache, Maven, 介绍"/>
|
||||
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter1/chapter1.html"/>
|
||||
<meta name="prodname" content="Maven权威指南"/>
|
||||
<meta name="version" content="1.0.0.0"/>
|
||||
<meta name="brand" content="HAWEBS Maven"/>
|
||||
<meta name="copyright" content="HAWEBS信息技术股份有限公司 2006, 2010" type="primary"/>
|
||||
<meta name="DC.Rights.Owner" content="HAWEBS信息技术股份有限公司 2006, 2010" type="primary"/>
|
||||
<meta name="DC.Format" content="XHTML"/>
|
||||
<meta name="DC.Identifier" content="chapter1_3"/>
|
||||
<meta name="DC.Language" content="zh"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/commonltr.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/public.css"/>
|
||||
<title>一个一般的接口</title>
|
||||
</head>
|
||||
<body id="chapter1_3"><a name="chapter1_3"><!-- --></a>
|
||||
|
||||
|
||||
<h1 class="topictitle1">一个一般的接口 </h1>
|
||||
|
||||
|
||||
<div>
|
||||
<p>在 Maven 为构建软件提供一个一般的接口之前,每个单独的项目都专门有人来管理一个完全自定义的构建系统。开发人员必须在开发软件之外去学习每个他们要参与的新项目的构建系统的特点。 在2001年,构建一个项目如 <a href="http://turbine.apache.org/" target="_blank">Turbine</a> 和构建另外一个项目如 <a href="http://tomcat.apache.org/" target="_blank">Tomcat</a> ,两者方法是完全不同的。如果一个新的进行静态源码分析的源码分析工具面世了,或者如果有人开发了一个新的单元测试框架,每个人都必须放下手头的工作去想办法使这个新东西适应每个项目的自定义构建环境。 如何运行单元测试?世界上有一千种不同的答案。构建环境由无数无休止的关于工具和构建程序的争论所描述刻画。Maven 之前的时代是低效率的时代,是“构建工程师”的时代。 </p>
|
||||
|
||||
<p>现在,大部分开源开发者已经或者正在使用 Maven 来管理他们新的软件项目。这种转变不仅仅是开发人员从一种构建工具转移到另外一种构建工具,更是开发人员开始为他们的项目采用一种一般的接口。随着软件系统变得越来越模块化,构建系统变得更复杂,而项目的数量更是如火箭般飞速上升。在 Maven 之前,当你想要从 Subversion 签出一个项目如 <a href="http://activemq.apache.org/" target="_blank">Apache ActiveMQ</a> 或 <a href="http://servicemix.apache.org/home.html" target="_blank">Apache ServiceMix</a> ,然后从源码进行构建,你需要为每个项目留出一个小时来理解给它的构建系统。这个项目需要构建什么?需要现在什么类库?把类库放哪里?构建中我该运行什么目标?最好的情况下,理解一个新项目的构建需要几分钟,最坏的情况下(例如 Jakarta 项目的旧的 Servlet API 实现),一个项目的构建特别的困难,以至于花了几个小时以后,新的贡献者也只能编辑源码和编译项目。现在,你只要签出源码,然后运行:<span class="cmdname">mvn install</span>。虽然 Maven 有很多优点,包括依赖管理和通过插件重用一般的构建逻辑,但它成功的最核心原因是它定义了构建软件的一般的接口。每当你看到一个使用 Maven 的项目如 <a href="http://wicket.apache.org/" target="_blank">Apache Wicket</a> ,你就可以假设你能签出它的源码然后使用 <span class="cmdname">mvn install</span> 构建它,没什么好争论的。你知道点火开关在哪里,你知道油门在右边,刹车在左边。 </p>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="familylinks">
|
||||
<div class="parentlink"><strong>父主题:</strong> <a href="../../tasks/chapter1/chapter1.html" title="主要对 Apache Maven 进行了简要的描述。">介绍 Apache Maven</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -16,6 +16,7 @@
|
||||
<ul>
|
||||
<li><a href="tasks/chapter1/chapter1_1.html">Maven 它是什么</a></li>
|
||||
<li><a href="tasks/chapter1/chapter1_2.html">约定优于配置(Convention Over Configuration)</a></li>
|
||||
<li><a href="tasks/chapter1/chapter1_3.html">一个一般的接口</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -60,6 +60,7 @@ h1, h2, h3 {
|
||||
p, ul, ol, dl {
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.8em;
|
||||
line-height: 1.6em;
|
||||
}
|
||||
ul, ol, dl {
|
||||
margin-left: 1.2em;
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
<topicref navtitle="" href="tasks/info/hacopyright.dita"/>
|
||||
<topicref href="tasks/info/apachelicense.dita"/>
|
||||
<topicref href="tasks/chapter1/chapter1.dita">
|
||||
<topicref href="tasks/chapter1/chapter1_1.dita"/>
|
||||
<topicref href="tasks/chapter1/chapter1_1.dita"/>
|
||||
<topicref href="tasks/chapter1/chapter1_2.dita"/>
|
||||
<topicref href="tasks/chapter1/chapter1_3.dita"/>
|
||||
</topicref>
|
||||
</map>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd" []>
|
||||
<!--
|
||||
**
|
||||
* Copyright (C) 2006-2010 YUCHENG HU
|
||||
*
|
||||
* +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
* HA WEBSYSTEMS
|
||||
* http://www.hawebs.net
|
||||
* http://www.tcivis.com
|
||||
*
|
||||
* Contact
|
||||
* huyuchengus@gmail.com / yuchenghu@hawebs.net
|
||||
*
|
||||
* +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
* GNU GENERAL PUBLIC LICENSE
|
||||
* APACHE LICENSE, VERSION 2.0
|
||||
*
|
||||
* +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
-->
|
||||
|
||||
<concept id="chapter1_3" xml:lang="zh">
|
||||
<title>一个一般的接口 </title>
|
||||
<prolog>
|
||||
<metadata>
|
||||
<keywords>
|
||||
<indexterm>Apache</indexterm>
|
||||
<indexterm>Maven</indexterm>
|
||||
<indexterm>介绍</indexterm>
|
||||
</keywords>
|
||||
</metadata>
|
||||
</prolog>
|
||||
<conbody>
|
||||
<p>在 Maven 为构建软件提供一个一般的接口之前,每个单独的项目都专门有人来管理一个完全自定义的构建系统。开发人员必须在开发软件之外去学习每个他们要参与的新项目的构建系统的特点。 在2001年,构建一个项目如 <xref format="html" scope="external" href="http://turbine.apache.org/">Turbine</xref> 和构建另外一个项目如 <xref format="html" scope="external" href="http://tomcat.apache.org/">Tomcat</xref> ,两者方法是完全不同的。如果一个新的进行静态源码分析的源码分析工具面世了,或者如果有人开发了一个新的单元测试框架,每个人都必须放下手头的工作去想办法使这个新东西适应每个项目的自定义构建环境。 如何运行单元测试?世界上有一千种不同的答案。构建环境由无数无休止的关于工具和构建程序的争论所描述刻画。Maven 之前的时代是低效率的时代,是“构建工程师”的时代。 </p>
|
||||
<p>现在,大部分开源开发者已经或者正在使用 Maven 来管理他们新的软件项目。这种转变不仅仅是开发人员从一种构建工具转移到另外一种构建工具,更是开发人员开始为他们的项目采用一种一般的接口。随着软件系统变得越来越模块化,构建系统变得更复杂,而项目的数量更是如火箭般飞速上升。在 Maven 之前,当你想要从 Subversion 签出一个项目如 <xref href="http://activemq.apache.org/" format="html" scope="external">Apache ActiveMQ</xref> 或 <xref format="html" scope="external" href="http://servicemix.apache.org/home.html">Apache ServiceMix</xref> ,然后从源码进行构建,你需要为每个项目留出一个小时来理解给它的构建系统。这个项目需要构建什么?需要现在什么类库?把类库放哪里?构建中我该运行什么目标?最好的情况下,理解一个新项目的构建需要几分钟,最坏的情况下(例如 Jakarta 项目的旧的 Servlet API 实现),一个项目的构建特别的困难,以至于花了几个小时以后,新的贡献者也只能编辑源码和编译项目。现在,你只要签出源码,然后运行:<cmdname>mvn install</cmdname>。虽然 Maven 有很多优点,包括依赖管理和通过插件重用一般的构建逻辑,但它成功的最核心原因是它定义了构建软件的一般的接口。每当你看到一个使用 Maven 的项目如 <xref href="http://wicket.apache.org/" format="html" scope="external">Apache Wicket</xref> ,你就可以假设你能签出它的源码然后使用 <cmdname>mvn install</cmdname> 构建它,没什么好争论的。你知道点火开关在哪里,你知道油门在右边,刹车在左边。 </p>
|
||||
</conbody>
|
||||
</concept>
|
||||
Reference in New Issue
Block a user