当前位置: 首页 > news >正文

网站2级目录怎么做一站式网站建设有哪些

网站2级目录怎么做,一站式网站建设有哪些,业之峰装饰公司北京地址,网站建设模板图片1、安装目录分析 1.1、环境变量MAVEN_HOME 环境变量指向Maven的安装目录#xff0c;如下图所示#xff1a; 下面看一下该目录的结构和内容#xff1a; bin#xff1a;该目录包含了mvn运行的脚本#xff0c;这些脚本用来配置Java命令#xff0c;准备好classpath和相关…1、安装目录分析 1.1、环境变量MAVEN_HOME 环境变量指向Maven的安装目录如下图所示 下面看一下该目录的结构和内容 bin该目录包含了mvn运行的脚本这些脚本用来配置Java命令准备好classpath和相关的Java系统属性然后执行Java命令。其中mvn是基于UNIX平台的shell脚本mvn.bat是基于Windows平台的bat脚本。在命令行输入任何一条mvn命令时实际上就是在调用这些脚本。该目录还包含了mvnDebug和mvnDebug.bat两个文件同样前者是UNIX平台的shell脚本后者是Windows平台的bat脚本。那么mvn和mvnDebug有什么区别和关系呢打开文件我们就可以看到两者基本是一样的只是mvnDebug多了一条MAVEN_DEBUG_OPTS配置其作用就是在运行Maven时开启debug以便调试Maven本身。此外该目录还包含m2.conf文件这是classworlds的配置文件后面会介绍classworlds。boot该目录只包含一个文件以maven 3.0为例该文件为plexus-classworlds-2.2.3.jar。plexus-classworlds是一个类加载器框架相对于默认的java类加载器它提供了更丰富的语法以方便配置Maven使用该框架加载自己的类库。更多关于classworlds的信息请参考http://classworlds.codehaus.org/。对于一般的Maven用户来说不必关心该文件。conf该目录包含了一个非常重要的文件settings.xml。直接修改该文件就能在机器上全局地定制Maven的行为。一般情况下我们更偏向于复制该文件至/.m2/目录下表示用户目录然后修改该文件在用户范围定制Maven的行为。后面将会多次提到settings.xml并逐步分析其中的各个元素。lib该目录包含了所有Maven运行时需要的Java类库Maven本身是分模块开发的因此用户能看到诸如maven-core-3.0.jar、maven-model-3.0.jar之类的文件。此外这里还包含一些Maven用到的第三方依赖如common-cli-1.2.jar、google-collection-1.0.jar等。对于Maven 2来说该目录只包含一个如maven-2.2.1-uber.jar的文件原本各为独立JAR文件的Maven模块和第三方类库都被拆解后重新合并到了这个JAR文件中。可以说lib目录就是真正的Maven。关于该文件还有一点值得一提的是用户可以在这个目录中找到Maven内置的超级POM。其他LICENSE.txt记录了Maven使用的软件许可证Apache License Version 2.0NOTICE.txt记录了Maven包含的第三方软件而README.txt则包含了Maven的简要介绍包括安装需求及如何安装的简要指令等。 3.2、/.m2 我们先运行一条简单的命令mvn help:system。该命令会打印出所有的Java系统属性和环境变量这些信息对我们日常的编程工作很有帮助。这里暂不解释help:system涉及的语法运行这条命令的目的是让Maven执行一个真正的任务。我们可以从命令行输出看到Maven会下载maven-help-plugin包括pom文件和jar文件。这些文件都被下载到了Maven本地仓库中。 现在打开用户目录比如当前的用户目录是C:\Users\yyb 在用户目录下可以发现.m2文件夹。默认情况下该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件都被存储到该仓库中以方便重用。可以到/.m2/reposi-tory/org/apache/maven/plugins/maven-help-plugins/目录下找到刚才下载的maven-help-plugin的pom文件和jar文件。Maven根据一套规则来确定任何一个构件在仓库中的位置。由于Maven仓库是通过简单文件系统透明地展示给Maven用户的有些时候可以绕过Maven直接查看或修改仓库文件在遇到疑难问题时这往往十分有用。 默认情况下/.m2目录下除了repository仓库之外就没有其他目录和文件了不过大多数Maven用户需要复制环境变量MAVEN_HOME/conf/settings.xml文件到/.m2/settings.xml。这是一条最佳实践。 2、设置HTTP代理 有时候你所在的公司基于安全因素考虑要求你使用通过安全认证的代理访问因特网。这种情况下就需要为Maven配置HTTP代理才能让它正常访问外部仓库以下载所需要的资源。 首先确认自己无法直接访问公共的Maven中央仓库直接运行命令ping repo1.maven.org可以检查网络。如果真的需要代理先检查一下代理服务器是否畅通。比如现在有一个IP地址为218.14.227.197端口为3128的代理服务我们可以运行telnet 218.14.227.197 3128来检测该地址的该端口是否畅通。如果得到出错信息需要先获取正确的代理服务信息如果telnet连接正确则输入ctrl]然后q回车退出即可。 检查完毕之后编辑/.m2/settings.xml文件如果没有该文件则复制$MAVEN_HOME/conf/settings.xml。添加代理配置如下 ?xml version1.0 encodingUTF-8?settings xmlnshttp://maven.apache.org/SETTINGS/1.2.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsdlocalRepositoryD:\codeSoftPath\apache-maven-3.9.4\localRepository/localRepositorypluginGroups!-- pluginGroup| Specifies a further group identifier to use for plugin lookup.pluginGroupcom.your.plugins/pluginGroup--/pluginGroupsproxies!-- proxy| Specification for one proxy, to be used in connecting to the network.|proxyidoptional/idactivetrue/activeprotocolhttp/protocolusernameproxyuser/usernamepasswordproxypass/passwordhostproxy.host.net/hostport80/portnonProxyHostslocal.net|some.host.com/nonProxyHosts/proxy--/proxiesservers!-- server| Specifies the authentication information to use when connecting to a particular server, identified by| a unique name within the system (referred to by the id attribute below).|| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are| used together.|serveriddeploymentRepo/idusernamerepouser/usernamepasswordrepopwd/password/server--!-- Another sample, using keys to authenticate.serveridsiteServer/idprivateKey/path/to/private/key/privateKeypassphraseoptional; leave empty if not used./passphrase/server--/serversmirrorsmirroridaliyun-public/idnamealiyun-public mirror/nameurlhttps://maven.aliyun.com/repository/public//urlmirrorOf*/mirrorOf/mirrormirroridcentral/idnameMaven Repository Switchboard/nameurlhttps://repo1.maven.org/maven2//urlmirrorOfcentral/mirrorOf/mirror/mirrorsprofiles!-- profile| Specifies a set of introductions to the build process, to be activated using one or more of the| mechanisms described above. For inheritance purposes, and to activate profiles via activatedProfiles/| or the command line, profiles have to have an ID that is unique.|| An encouraged best practice for profile identification is to use a consistent naming convention| for profiles, such as env-dev, env-test, env-production, user-jdcasey, user-brett, etc.| This will make it more intuitive to understand what the set of introduced profiles is attempting| to accomplish, particularly when you only have a list of profile ids for debug.|| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.profileidjdk-1.4/idactivationjdk1.4/jdk/activationrepositoriesrepositoryidjdk14/idnameRepository for JDK 1.4 builds/nameurlhttp://www.myhost.com/maven/jdk14/urllayoutdefault/layoutsnapshotPolicyalways/snapshotPolicy/repository/repositories/profile--/profiles/settings 这段配置十分简单proxies下可以有多个proxy元素如果声明了多个proxy元素则默认情况下第一个被激活的proxy会生效。这里声明了一个id为my-proxy的代理active的值为true表示激活该代理protocol表示使用的代理协议这里是http。当然最重要的是指定正确的主机名host元素和端口port元素。上述XML配置中注释掉了username、password、nonProxyHost几个元素。当代理服务需要认证时就需要配置username和password。nonProxyHost元素用来指定哪些主机名不需要代理可以使用“|”符号来分隔多个主机名。此外该配置也支持通配符如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。 3、Maven安装最佳实践 3.1、设置MAVEN_OPTS环境变量 运行mvn命令实际上是执行了Java命令既然是运行Java那么运行Java命令可用的参数当然也应该在运行mvn命令时可用。这个时候MAVEN_OPTS环境变量就能派上用场。 通常需要设置MAVEN_OPTS的值为-Xms128m-Xmx512m因为Java默认的最大可用内存往往不能够满足Maven运行的需要比如在项目较大时使用Maven生成项目站点需要占用大量的内存如果没有该配置则很容易得到java.lang.OutOfMemeoryError。因此一开始就配置该变量是推荐的做法。 尽量不要直接修改mvn.bat或者mvn这两个Maven执行脚本文件。因为如果修改了脚本文件升级Maven时就不得不再次修改一来麻烦二来容易忘记。同理应该尽可能地不去修改任何Maven安装目录下的文件。 3.2、配置用户范围settings.xml Maven用户可以选择配置$MAVEN_HOME/conf/settings.xml或者/.m2/settings.xml。前者是全局范围的整台机器上的所有用户都会直接受到该配置的影响而后者是用户范围的只有当前用户才会受到该配置的影响。 推荐使用用户范围的settings.xml主要是为了避免无意识地影响到系统中的其他用户。如果有切实的需求需要统一系统中所有用户的settings.xml配置当然应该使用全局范围的settings.xml。 除了影响范围这一因素配置用户范围settings.xml文件还便于Maven升级。直接修改conf目录下的settings.xml会导致Maven升级不便每次升级到新版本的Maven都需要复制settings.xml文件。如果使用/.m2目录下的settings.xml就不会影响到Maven安装文件升级时就不需要触动settings.xml文件。 3.3、不要使用IDE内嵌的Maven 无论Eclipse还是NetBeans还是IDEA当集成Maven时都会安装上一个内嵌的Maven这个内嵌的Maven通常会比较新但不一定很稳定而且往往也会和在命令行使用的Maven不是同一个版本。这里又会出现两个潜在的问题首先较新版本的Maven存在很多不稳定因素容易造成一些难以理解的问题其次除了IDE也经常还会使用命令行的Maven如果版本不一致容易造成构建行为的不一致这是我们所不希望看到的。因此应该在IDE中配置Maven插件时使用与命令行一致的Maven。 4、编写POM 就像Make的Makefile、Ant的build.xml一样Maven项目的核心是pom.xml。**POMProject Object Model项目对象模型**定义了项目的基本信息用于描述项目如何构建声明项目依赖等等。现在先为Hello World项目编写一个最简单的pom.xml。 首先创建一个名为hello-world的文件夹打开该文件夹新建一个名为pom.xml的文件输入其内容如代码下所示 ?xml version1.0encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd modelVersion4.0.0/modelVersion groupIdcom.juvenxu.mvnbook/groupId artifactIdhello-world/artifactId version1.0-SNAPSHOT/version nameMaven Hello World Project/name /project代码的第一行是XML头指定了该xml文档的版本和编码方式。紧接着是project元素project是所有pom.xml的根元素它还声明了一些POM相关的命名空间及xsd元素虽然这些属性不是必须的但使用这些属性能够让第三方工具如IDE中的XML编辑器帮助我们快速编辑POM。 根元素下的第一个子元素modelVersion指定了当前POM模型的版本对于Maven 2及Maven 3来说它只能是4.0.0。 这段代码中最重要的是包含groupId、artifactId和version的三行。这三个元素定义了一个项目基本的坐标在Maven的世界任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。 groupId定义了项目属于哪个组这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目那么groupId就应该是com.googlecode.myapp如果你的公司是mycom有一个项目为myapp那么groupId就应该是com.mycom.myapp。本书中所有的代码都基于groupId com.juvenxu.mvnbook。artifactId定义了当前Maven项目在组中唯一的ID我们为这个Hello World项目定义artifactId为hello-world本贴其他代码会分配其他的artifactId。而在前面的groupId为com.googlecode.myapp的例子中你可能会为不同的子项目模块分配artifactId如myapp-util、myapp-domain、myapp-web等。顾名思义version指定了Hello World项目当前的版本——1.0-SNAPSHOT。SNAPSHOT意为快照说明该项目还处于开发中是不稳定的版本。随着项目的发展version会不断更新如升级为1.0、1.1-SNAPSHOT、1.1、2.0等。 最后一个name元素声明了一个对于用户更为友好的项目名称虽然这不是必须的但还是推荐为每个POM声明name以方便信息交流。 没有任何实际的Java代码我们就能够定义一个Maven项目的POM这体现了Maven的一大优点它能让项目对象模型最大程度地与实际代码相独立我们可以称之为解耦或者正交性。这在很大程度上避免了Java代码和POM代码的相互影响。比如当项目需要升级版本时只需要修改POM而不需要更改Java代码而在POM稳定之后日常的Java代码开发工作基本不涉及POM的修改。 5、编写主代码 项目主代码和测试代码不同项目的主代码会被打包到最终的构件中如jar而测试代码只在运行测试时用到不会被打包。默认情况下Maven假设项目主代码位于src/main/java目录我们遵循Maven的约定创建该目录然后在该目录下创建文件com/juvenxu/mvnbook/helloworld/HelloWorld.java其内容如下代码所示 package com.juvenxu.mvnbook.helloworldpublic class HelloWorld{public String sayHello{returnHello Maven}public static void mainString[]args{System.out.printnew HelloWorld.sayHello} }这是一个简单的Java类它有一个sayHello方法返回一个String。同时这个类还带有一个main方法创建一个HelloWorld实例调用sayHello方法并将结果输出到控制台。 关于该Java代码有两点需要注意。首先在绝大多数情况下应该把项目主代码放到src/main/java/目录下遵循Maven的约定而无须额外的配置Maven会自动搜寻该目录找到项目主代码。其次该Java类的包名是com.juvenxu.mvnbook.helloworld这与之前在POM中定义的groupId和artifactId相吻合。一般来说项目中Java类的包都应该基于项目的groupId和artifactId这样更加清晰更加符合逻辑也方便搜索构件或者Java类。 代码编写完毕后使用Maven进行编译在项目根目录下运行命令mvn clean compile会得到如下输出 [INFO] Scanning for projects… [INFO] [INFO] Building Maven Hello World Project[INFO]task-segment: [clean, compile] [INFO] [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory D:codehello-worldtarget[INFO] [resources:resources {execution:default-resources}][INFO] skip non existing resourceDirectory D:code hello-world src main resources[INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to D: codehello-worldtargetclasses [INFO] [INFO] BUILD SUCCESSFUL[INFO] [INFO] Total time: 1 second [INFO] Finished at: Fri Oct 09 02:08:09 CST 2009[INFO] Final Memory: 9M16M [INFO]clean告诉Maven清理输出目录target/compile告诉Maven编译项目主代码从输出中看到Maven首先执行了clean:clean任务删除target/目录。默认情况下Maven构建的所有输出都在target/目录中接着执行resources:resources任务未定义项目资源暂且略过最后执行compiler:compile任务将项目主代码编译至target/classes目录编译好的类为com/juvenxu/mvnbook/helloworld/HelloWorld.Class。 上文提到的clean:clean、resources:resources和compiler:compile对应了一些Maven插件及插件目标比如clean:clean是clean插件的clean目标compiler:compile是compiler插件的compile目标。 至此Maven在没有任何额外的配置的情况下就执行了项目的清理和编译任务。接下来编写一些单元测试代码并让Maven执行自动化测试。 5、编写测试代码 为了使项目结构保持清晰主代码与测试代码应该分别位于独立的目录中。Maven项目中默认的主代码目录是src/main/java对应地Maven项目中默认的测试代码目录是src/test/java。因此在编写测试用例之前应当先创建该目录。 在Java世界中由Kent Beck和Erich Gamma建立的JUnit是事实上的单元测试标准。要使用JUnit首先需要为Hello World项目添加一个JUnit依赖修改项目的POM如代码清单如下所示 ?xml version1.0encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd modelVersion4.0.0/modelVersion groupIdcom.juvenxu.mvnbook/groupId artifactIdhello-world/artifactId version1.0-SNAPSHOT/version nameMaven Hello World Project/name dependencies dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.7/version scopetest/scope /dependency /dependencies /project代码中添加了dependencies元素该元素下可以包含多个dependency元素以声明项目的依赖。这里添加了一个依赖——groupId是junit,artifactId是junit,version是4.7。前面提到groupId、artifactId和version是任何一个Maven项目最基本的坐标JUnit也不例外有了这段声明Maven就能够自动下载junit-4.7.jar。也许你会问Maven从哪里下载这个jar呢在Maven之前可以去JUnit的官方网站下载分发包有了Maven它会自动访问中央仓库http://repo1.maven.org/maven2/下载需要的文件。读者也可以自己访问该仓库打开路径junit/junit/4.7/就能看到junit-4.7.pom和junit-4.7.jar。 上述POM代码中还有一个值为test的元素scope,scope为依赖范围若依赖范围为test则表示该依赖只对测试有效。换句话说测试代码中的import JUnit代码是没有问题的但是如果在主代码中用import JUnit代码就会造成编译错误。如果不声明依赖范围那么默认值就是compile表示该依赖对主代码和测试代码都有效。 配置了测试依赖接着就可以编写测试类。回顾一下前面的HelloWorld类现在要测试该类的sayHello方法检查其返回值是否为“Hello Maven”。在src/test/java目录下创建文件其内容如代码清单如下所示 package com.juvenxu.mvnbook.helloworld import static org.junit.Assert.assertEquals import org.junit.Test public class HelloWorldTest{Testpublic void testSayHello{HelloWorld helloWorldnew HelloWorldString resulthelloWorld.sayHelloassertEqualsHello Mavenresult} }一个典型的单元测试包含三个步骤①准备测试类及数据②执行要测试的行为③检查结果。上述样例首先初始化了一个要测试的HelloWorld实例接着执行该实例的sayHello方法并保存结果到result变量中最后使用JUnit框架的Assert类检查结果是否为我们期望的“Hello Maven”。在JUnit 3中约定所有需要执行测试的方法都以test开头这里使用了JUnit 4但仍然遵循这一约定。在JUnit 4中需要执行的测试方法都应该以Test进行标注。 测试用例编写完毕之后就可以调用Maven执行测试。运行mvn clean test [INFO][compiler:testCompile{execution:default-testCompile}] [INFO] Compiling 1 source file to D: codehello-worldtargettest-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: D:codehello-worldtargetsurefire-reportsT E S T S Tests run: 1, Failures: 0, Errors: 0, Skipped:0, Time elapsed: 0.055 secResults :Tests run: 1, Failures: 0, Errors: 0, Skipped:0 [INFO] [INFO] BUILD SUCCESSFUL [INFO]…我们看到compiler:testCompile任务执行成功了测试代码通过编译之后在target/test-classes下生成了二进制文件紧接着surefire:test任务运行测试surefire是Maven中负责执行测试的插件这里它运行测试用例HelloWorldTest并且输出测试报告显示一共运行了多少测试失败了多少出错了多少跳过了多少。显然我们的测试通过了。 6、打包和运行 将项目进行编译、测试之后下一个重要步骤就是打包package。Hello World的POM中没有指定打包类型使用默认打包类型jar。简单地执行命令mvn clean package进行打包可以看到如下输出 Tests run: 1, Failures: 0, Errors: 0, Skipped:0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: D:codehello-worldtargethello-world-1.0-SNAPSHOT.jar [INFO] [INFO] BUILD SUCCESSFUL…类似地Maven会在打包之前执行编译、测试等操作。这里看到jar:jar任务负责打包实际上就是jar插件的jar目标将项目主代码打包成一个名为hello-world-1.0-SNAP-SHOT.jar的文件。该文件也位于target/输出目录中它是根据artifact-version.jar规则进行命名的如有需要还可以使用finalName来自定义该文件的名称这里暂且不展开后面会详细解释。 至此我们得到了项目的输出如果有需要的话就可以复制这个jar文件到其他项目的Classpath中从而使用HelloWorld类。但是如何才能让其他的Maven项目直接引用这个jar呢还需要一个安装的步骤执行mvn clean install ……[INFO][jar:jar{execution:default-jar}] [INFO] Building jar: D: codehello-worldtargethello-world-1.0-SNAPSHOT.jar [INFO] [install:install {execution: default-install}] [INFO] Installing D:codehello-world target hello-world-1.0-SNAPSHOT.jar toC:Usersjuven .m2 repository com juvenxu mvnbook hello-world 1.0-SNAPSHOT hello-world-1.0-SNAPSHOT.jar [INFO] [INFO] BUILD SUCCESSFUL…在打包之后又执行了安装任务install:install。从输出可以看到该任务将项目输出的jar安装到了Maven本地仓库中可以打开相应的文件夹看到Hello World项目的pom和jar。之前讲述JUnit的POM及jar的下载的时候我们说只有构件被下载到本地仓库后才能由所有Maven项目使用这里是同样的道理只有将Hello World的构件安装到本地仓库之后其他Maven项目才能使用它。 我们已经体验了Maven最主要的命令mvn clean compile、mvn clean test、mvn clean package、mvn clean install。执行test之前是会先执行compile的执行package之前是会先执行test的而类似地install之前会执行package。可以在任何一个Maven项目中执行这些命令而且我们已经清楚它们是用来做什么的。 到目前为止还没有运行Hello World项目不要忘了HelloWorld类可是有一个main方法的。默认打包生成的jar是不能够直接运行的因为带有main方法的类信息不会添加到manifest中打开jar文件中的META-INF/MANIFEST.MF文件将无法看到Main-Class一行。为了生成可执行的jar文件需要借助maven-shade-plugin配置该插件如下 plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-shade-plugin/artifactId version1.2.1/version executions execution phasepackage/phase goals goalshade/goal /goals configuration transformers transformer implementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformer mainClasscom.juvenxu.mvnbook.helloworld.HelloWorld/mainClass/transformer /transformers /configuration /execution /executions /pluginplugin元素在POM中的相对位置应该在projectbuildplugins下面。我们配置了mainClass为com.juvenxu.mvnbook.helloworld.HelloWorld项目在打包时会将该信息放到MANIFEST中。现在执行mvn clean install待构建完成之后打开target/目录可以看到hel-lo-world-1.0-SNAPSHOT.jar和original-hello-world-1.0-SNAPSHOT.jar前者是带有Main-Class信息的可运行jar后者是原始的jar打开hello-world-1.0-SNAPSHOT.jar的META-INF/MANIFEST.MF可以看到它包含这样一行信息 Main-Class:com.juvenxu.mvnbook.helloworld.HelloWorld现在在项目根目录中执行该jar文件 D:\code\hello-worldjava-jar target\hello-world-1.0-SNAPSHOT.jar Hello Maven控制台输出为Hello Maven这正是我们所期望的。 本小节介绍了Hello World项目侧重点是Maven而非Java代码本身介绍了POM、Maven项目结构以及如何编译、测试、打包等。 7、使用Archetype生成项目骨架 Hello World项目中有一些Maven的约定在项目的根目录中放置pom.xml在src/main/java目录中放置项目的主代码在src/test/java中放置项目的测试代码。之所以一步一步地展示这些步骤是为了能让可能是Maven初学者的你得到最实际的感受。我们称这些基本的目录结构和pom.xml文件内容称为项目的骨架当第一次创建项目骨架的时候你还会饶有兴趣地去体会这些默认约定背后的思想第二次第三次你也许还会满意自己的熟练程度但第四、第五次做同样的事情你可能就会恼火了。为此Maven提供了Archetype以帮助我们快速勾勒出项目骨架。 还是以Hello World为例我们使用maven archetype来创建该项目的骨架离开当前的Maven项目目录。 如果是Maven 3简单地运行 mvn archetype:generate如果是Maven 2最好运行如下命令 mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5generate很多资料会让你直接使用更为简单的mvn archetype:generate命令但在Maven 2中这是不安全的因为该命令没有指定Archetype插件的版本于是Maven会自动去下载最新的版本进而可能得到不稳定的SNAPSHOT版本导致运行失败。然而在Maven 3中即使用户没有指定版本Maven也只会解析最新的稳定版本因此这是安全的。 我们实际上是在运行插件maven-archetype-plugin注意冒号的分隔其格式为groupId:artifactId:version:goal,org.apache.maven.plugins是maven官方插件的groupId,maven-archetype-plugin是Archetype插件的artifactId2.0-alpha-5是目前该插件最新的稳定版generate是要使用的插件目标。 紧接着会看到一段长长的输出有很多可用的Archetype供选择包括著名的Appfuse项目的Archetype、JPA项目的Archetype等。每一个Archetype前面都会对应有一个编号同时命令行会提示一个默认的编号其对应的Archetype为maven-archetype-quickstart直接回车以选择该Archetype紧接着Maven会提示输入要创建项目的groupId、artifactId、version以及包名package。如下输入并确认 Define value for groupId:com.juvenxu.mvnbook Define value for artifactId:hello-world Define value for version:1.0-SNAPSHOTDefine value for package:com.juvenxu.mvnbook:com.juvenxu.mvnbook.helloworld Confirm properties configurationgroupId:com.juvenxu.mvnbook artifactId:hello-worldversion:1.0-SNAPSHOT package:com.juvenxu.mvnbook.helloworld Y:YArchetype插件将根据我们提供的信息创建项目骨架。在当前目录下Archetype插件会创建一个名为hello-world我们定义的artifactId的子目录从中可以看到项目的基本结构基本的pom.xml已经被创建里面包含了必要的信息以及一个junit依赖主代码目录src/main/java已经被创建在该目录下还有一个Java类com.juvenxu.mvnbook.helloworld.App注意这里使用到了刚才定义的包名而这个类也仅仅只有一个简单的输出Hello World的main方法测试代码目录src/test/java也被创建好了并且包含了一个测试用例com.juvenxu.mvnbook.helloworld.AppTest。 Archetype可以帮助我们迅速地构建起项目的骨架在前面的例子中我们完全可以在Archetype生成的骨架的基础上开发Hello World项目以节省大量时间。 此外这里仅仅是看到了一个最简单的Archetype如果有很多项目拥有类似的自定义项目结构以及配置文件则完全可以一劳永逸地开发自己的Archetype然后在这些项目中使用自定义的Archetype来快速生成项目骨架。
http://www.zqtcl.cn/news/885527/

相关文章:

  • 先网站开发后软件开发显示网站运行时间代码
  • 品牌网站制作流程图百度网页版入口页
  • 哪些人需要做网站网站开发工程师 招聘
  • 东莞网站建设多长时间如何将网址提交到一些权重比较高的网站
  • 阳江网站seo公司wordpress建站博客
  • 我想做京东网站淘宝怎么做的wordpress淘宝联盟转链
  • 虚拟钱包对接网站开发视频教程营销型网站建设要懂代码吗
  • 莱州教育网站一站式网站搭建
  • 开发网站开票名称是什么捕鱼游戏网站开发商
  • 我国中小企业网站建设怎样办自己的网站
  • 如何推广自己网站链接通化北京网站建设
  • 小型的游戏网站怎么做WordPress设置作者信息
  • 网站建设师要求关键词优化排名易下拉排名
  • 网站建设步骤及推广方法做网站的公司叫什么
  • 怎么建立自己网站 asp网站做视频流量赚钱
  • 全屏网站宽度域名服务器怎么设置
  • 网站图片切换js代码金融公司网站方案
  • 企业网站开发步骤开源软件开发
  • 建设项目环境影响登记表备案系统网站签署网站建设协议新闻
  • 有的网站在浏览器打不开怎么办最近中国新闻热点大事件
  • 网站模板组件随州网站建设有哪些
  • 网站建设微信版8080端口wordpress
  • 急求聊城网站建设微信网页注册入口
  • 商城网站建站程序网站内链布局
  • 盐城网站建设方案全景旅游网站项目建设
  • 网站备案完电信园林效果图网站
  • 伤豆丁文库网站开发贵州网站备案局
  • 做网站的注意什么北京建设协会网站首页
  • 石家庄网站开发设计网站建设重点步骤
  • 推广思路及执行方案昆明百度seo