建网站有什么用,网站内容建设怎么写,win8导航网站源码,如何用ps做网站首页图片一、如何创建JAR并将其安装在本地存储库中#xff1f;
制作JAR文件非常简单#xff0c;可以通过执行以下命令来完成#xff1a;
mvn package现在可以查看${project.basedir}/target目录#xff0c;您将看到生成的JAR文件。 现在#xff0c;您需要将生成的工件#xff0…一、如何创建JAR并将其安装在本地存储库中
制作JAR文件非常简单可以通过执行以下命令来完成
mvn package现在可以查看${project.basedir}/target目录您将看到生成的JAR文件。 现在您需要将生成的工件JAR文件安装在本地存储库中${user.home}/.m2/repository是默认位置。有关存储库的更多信息您可以参考我们的存储库简介但让我们继续安装我们的工件为此请执行以下命令
mvn install执行此命令时您应该看到以下输出
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------- com.mycompany.app:my-app ----------------------
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) my-app ---
...
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) my-app ---
...
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) my-app ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.mycompany.app.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 s - in com.mycompany.app.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) my-app ---
[INFO] Building jar: dir/my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) my-app ---
[INFO] Installing dir/my-app/target/my-app-1.0-SNAPSHOT.jar to local-repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
[INFO] Installing dir/my-app/pom.xml to local-repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.678 s
[INFO] Finished at: 2020-07-12T12:04:4501:00
[INFO] ------------------------------------------------------------------------
请注意surefire插件执行测试查找包含在具有特定命名约定的文件中的测试。默认情况下包括的测试包括
**/*Test.java**/Test*.java**/*TestCase.java
默认排除为
**/Abstract*Test.java**/Abstract*TestCase.java
您已经完成了设置、构建、测试、打包和安装典型Maven项目的过程。这很可能是项目使用Maven所做的绝大多数工作如果您注意到了到目前为止您所能做的一切都是由18行文件驱动的即项目的模型或POM。如果您查看一个典型的Ant构建文件该文件提供了我们迄今为止实现的相同功能您会注意到它已经是POM的两倍我们才刚刚开始您可以从Maven获得更多的功能而不需要像目前那样对POM进行任何添加。为了从示例Ant构建文件中获得更多功能您必须不断添加容易出错的内容。
那么你还能免费得到什么呢有许多Maven插件可以开箱即用即使是像我们上面这样的简单POM。我们将在这里特别提到一个因为它是Maven的一个非常宝贵的功能在您的部分没有任何工作的情况下这个POM有足够的信息来为您的项目生成一个网站您很可能希望自定义Maven站点但如果时间紧迫则需要执行以下命令来提供有关项目的基本信息
mvn site还有许多其他独立的目标也可以执行例如
mvn clean这将在启动之前删除包含所有生成数据的目标目录以便它是新的。
二、什么是快照SNAPSHOT版本
请注意下面所示的pom.xml文件中版本标记的值具有后缀-SNAPSHOT。
project xmlnshttp://maven.apache.org/POM/4.0.0...groupId.../groupIdartifactIdmy-app/artifactId...version1.0-SNAPSHOT/versionnameMaven Quick Start Archetype/name...
SNAPSHOT值是指开发分支上的“最新”代码并不能保证代码是稳定的或不变的。相反“release”版本中的代码没有后缀SNAPSHOT的任何版本值是不变的。 换句话说SNAPSHOT版本是最终“发布”版本之前的“开发”版本。SNAPSHOT比其版本“旧”。 在发布过程中x.y-SNAPSHOT的版本更改为x.y.发布过程还将开发版本增加到x.y1-SNAPSHOT。例如版本1.0-SNAPSHAT作为版本1.0发布新的开发版本为版本1.1-SNAPSHOT。
三、如何使用插件
每当您想要为Maven项目定制构建时可以通过添加或重新配置插件来完成。 对于这个例子我们将配置Java编译器以允许JDK5.0源代码。这就像将其添加到POM一样简单
...
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.3/versionconfigurationsource1.5/sourcetarget1.5/target/configuration/plugin/plugins
/build
...
您会注意到Maven中的所有插件都很像一个依赖项——在某些方面它们也是。该插件将自动下载和使用-如果您请求则包括特定版本默认为使用最新的可用版本。
配置元素将给定的参数应用于编译器插件的每个目标。在上述情况下编译器插件已经用作构建过程的一部分这只是更改配置。还可以向流程添加新目标并配置特定目标。
要了解插件的可用配置您可以查看插件列表并导航到您正在使用的插件和目标。有关如何配置插件的可用参数的一般信息请参阅《配置插件指南》。
四、如何将资源添加到JAR
另一个可以满足的常见用例是将资源打包到JAR文件中它不需要对上面的POM进行任何更改。对于这个常见的任务Maven再次依赖于标准目录布局这意味着通过使用标准Maven约定您可以将资源打包到JAR中只需将这些资源放置在标准目录结构中即可。
您可以在下面的示例中看到我们已经添加了目录${project.basedir}/src/main/resources我们将希望打包的任何资源放置在该目录中的JAR中。Maven采用的简单规则是放置在${project.basedir}/src/main/resources目录中的任何目录或文件都以从JAR底部开始的完全相同的结构打包在JAR中。
my-app
|-- pom.xml
-- src|-- main| |-- java| | -- com| | -- mycompany| | -- app| | -- App.java| -- resources| -- META-INF| -- application.properties-- test-- java-- com-- mycompany-- app-- AppTest.java
因此您可以在我们的示例中看到我们有一个META-INF目录该目录中有一个application.properties文件。如果您打开Maven为您创建的JAR并查看它您会看到以下内容
|-- META-INF
| |-- MANIFEST.MF
| -- application.properties
| -- maven
| -- com.mycompany.app
| -- my-app
| |-- pom.properties
| -- pom.xml
-- com-- mycompany-- app-- App.class 正如您所看到的${project.basedir}/src/main/resources的内容可以从JAR的底部开始找到我们的application.properties文件位于META-INF目录中。您还会注意到其他一些文件如META-INF/MMANIFEST.MF以及pom.xml和pom.properties文件。这些都是在Maven中生成JAR的标准配置。如果您愿意您可以创建自己的清单但如果您不这样做Maven将默认生成一个清单。您也可以修改默认清单中的条目。我们稍后会讨论这个问题。pom.xml和pom.properties文件被打包在JAR中这样Maven生成的每个工件都是自我描述的如果需要还可以在自己的应用程序中使用元数据。一个简单的用法可能是检索应用程序的版本。对POM文件进行操作需要使用一些Maven实用程序但可以使用标准Java API使用这些属性如下所示
#Generated by Maven
#Tue Oct 04 15:43:21 GMT-05:00 2005
version1.0-SNAPSHOT
groupIdcom.mycompany.app
artifactIdmy-app
要将资源添加到单元测试的类路径中除了将资源放置在${project.basedir}/src/test/resources的目录之外您可以使用与向JAR添加资源相同的模式
my-app
|-- pom.xml
-- src|-- main| |-- java| | -- com| | -- mycompany| | -- app| | -- App.java| -- resources| -- META-INF| |-- application.properties-- test|-- java| -- com| -- mycompany| -- app| -- AppTest.java-- resources-- test.properties 在单元测试中您可以使用下面这样的简单代码片段来访问测试所需的资源
...// Retrieve resource
InputStream is getClass().getResourceAsStream( /test.properties );// Do something with the resource...
五、如何筛选资源文件
有时资源文件需要包含一个只能在构建时提供的值。要在Maven中实现这一点请使用语法$property name将对将包含该值的属性的引用放入资源文件中。该属性可以是pom.xml中定义的值之一、用户的settings.xml中定义的一个值、外部属性文件中定义的属性或系统属性。 要在复制时让Maven过滤资源只需将pom.xml中的资源目录的过滤设置为true
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.mycompany.app/groupIdartifactIdmy-app/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnameMaven Quick Start Archetype/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependency/dependenciesbuildresourcesresourcedirectorysrc/main/resources/directoryfilteringtrue/filtering/resource/resources/build
/project
您会注意到我们必须添加以前没有的构建、资源和资源元素。此外我们必须明确声明资源位于src/main/resources目录中。所有这些信息以前都是作为默认值提供的但由于筛选的默认值是false我们不得不将其添加到pom.xml中以便覆盖该默认值并将筛选设置为true。
要引用pom.xml中定义的属性属性名称将使用定义该值的xml元素的名称允许将“pom”作为项目根元素的别名。因此${project.name}是指项目的名称${project.version}是指该项目的版本${program.build.finalName}是指在打包生成的项目时创建的文件的最终名称等等。请注意POM的某些元素具有默认值因此不需要在POM.xml中显式定义这些值即可在此处使用。类似地用户的settings.xml中的值可以使用以“settings”开头的属性名称来引用例如${settings.localRepository}指的是用户本地存储库的路径。
为了继续我们的示例让我们向application.properties文件我们将其放在src/main/resources目录中添加几个属性这些属性的值将在筛选资源时提供
# application.properties
application.name${project.name}
application.version${project.version} 有了它您可以执行以下命令流程资源是构建生命周期阶段在该阶段复制和筛选资源
mvn process-resourcestarget/classes下的application.properties文件最终将进入jar如下所示
# application.properties
application.nameMaven Quick Start Archetype
application.version1.0-SNAPSHOT 要引用外部文件中定义的属性只需在pom.xml中添加对该外部文件的引用。首先让我们创建外部属性文件并将其命名为src/main/filters/filter.properties
# filter.properties
my.filter.valuehello!
接下来我们将在pom.xml中添加对这个新文件的引用
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.mycompany.app/groupIdartifactIdmy-app/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnameMaven Quick Start Archetype/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependency/dependenciesbuildfiltersfiltersrc/main/filters/filter.properties/filter/filtersresourcesresourcedirectorysrc/main/resources/directoryfilteringtrue/filtering/resource/resources/build
/project
Then, if we add a reference to this property in the application.properties file:# application.properties
application.name${project.name}
application.version${project.version}
message${my.filter.value} mvn process-resources命令的下一次执行将把我们的新属性值放入application.properties中。作为在外部文件中定义my.filter.value属性的替代方案你也可以在pom.xml的properties部分中定义它你会得到同样的效果注意我也不需要对src/main/filters/filter.properties的引用
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.mycompany.app/groupIdartifactIdmy-app/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnameMaven Quick Start Archetype/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependency/dependenciesbuildresourcesresourcedirectorysrc/main/resources/directoryfilteringtrue/filtering/resource/resources/buildpropertiesmy.filter.valuehello/my.filter.value/properties
/project
过滤资源还可以从系统属性中获取值Java中内置的系统属性如Java.version或user.home或使用标准Java-D参数在命令行上定义的属性。为了继续这个示例让我们将application.properties文件更改为如下所示
# application.properties
java.version${java.version}
command.line.prop${command.line.prop} 现在当您执行以下命令时注意命令行上command.line.prop属性的定义application.properties文件将包含系统属性中的值
mvn process-resources -Dcommand.line.prophello againMaven 使用教程三_Doker 多克 技术人的数码品牌的博客-CSDN博客