首页>>后端>>SpringBoot->maven只能用于java?

maven只能用于java?

时间:2023-12-01 本站 点击:0

Maven是什么地干活

1 关键名词

Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。

POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。

GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。

Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到 (识别)它们。

Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。

Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。

Repository:仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。Maven有一个默认的远程仓库--central,可以从下载其中的artifact。在Windows平台上,本地仓库的默认地址是User_Home/.m2/repository。

Snapshot:工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。

2 Maven Build Life Cycle

软件项目一般都有相似的开发过程:准备,编译,测试,打包和部署,Maven将上述过程称为Build Life Cycle。在Maven中,这些生命周期由一系列的短语组成,每个短语对应着一个(或多个)操作;或对应着一个(或多个)goal(类似于Ant中的 target)。

如编译源文件的命令mvn compile中的compile是一个生命周期短语。同时该命令也可以等价于mvn compiler:compile,其中的compiler是一个插件,它提供了compile(此compile与mvn compile中的compile意义不同)goal;compiler还可提供另一个goal--testCompile,该goal用于编译junit测试类。

在执行某一个生命周期时,Maven会首先执行该生命周期之前的其它周期。如要执行compile,那么将首先执行validate,generate- source,process-source和generate-resources,最后再执行compile本身。关于Maven中默认的生命周期短语,请见参考资源[6]中的附录B.3。

3 标准目录布局

Maven为工程中的源文件,资源文件,配置文件,生成的输出和文档都制定了一个标准的目录结构。Maven鼓励使用标准目录布局,这样就不需要进行额外 的配置,而且有助于各个不同工程之间的联接。当然,Maven也允许定制个性的目录布局,这就需要进行更多的配置。关于Maven的标准目录布局,请见参考资源[6]中的附录B.1。

4 Maven的优点

[1]build逻辑可以被重用。在Ant中可能需要多次重复地写相同的语句,但由于POM的继承性,可以复用其它的POM文件中的语句。这样既可以写出清晰的build语句,又可以构造出层次关系良好的build工程。

[2]不必关注build工作的实现细节。我们只需要使用一些build生命周期短语就可以达到我们的目标,而不必管Maven是如何做到这些的。如,只需要告诉Maven要安装(install),那么它自然就会验证,编译,打包,及安装。

[3]Maven会递归加载工程依赖的artifact所依赖的其它artifact,而不用显示的将这些artifact全部写到dependency中。

[4]如果完全使用Maven的标准目录布局,那么可以极大地减少配置细节。

5 实例

5.1 构想

由于只是阐述Maven的基本使用方法,所以本文将要设计的实例,只是一个简单的Maven demo。该实例包含两个工程:普通应用程序工程(app)和Web应用工程(webapp)。app工程提供一个简单的Java类;webapp工程只 包含一个Servlet,并将使用app中的Java类。

该Demo的目标是能够正确地将webapp制成war包,以供部署时使用。要能够正确制作war,自然首先就必须要能够正确的编译源代码,且要将App模块制成jar包。本文创建的工程所在的目录是D:/maven/demo。

5.2 App工程

可以使用Maven的archetype插件来创建新工程,命令如下:

D:/maven/demomvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=app

该工程的groupId是ce.demo.mvn,那么该工程的源文件将放在Java包ce.demo.mvn中。artifactId是app,那么该工程根目录的名称将为app。

当第一次执行该命令时,Maven会从central仓库中下载一些文件。这些文件包含插件archetype,以及它所依赖的其它包。该命令执行完毕后,在目录D:/maven/demo下会出现如下目录布局:

app

|-- pom.xml

`-- src

|-- main

| `-- java

| `-- ce

| `-- demo

| `-- mvn

| `-- App.java

`-- test

`-- java

`-- ce

`-- demo

`-- mvn

`-- AppTest.java

因本文暂时不涉及JUnit测试,故请将目录app/src/test目录删除。然后再修改App.java文件,其完全内容如下:

package ce.demo.mvn;

public class App {

public String getStr(String str) {

return str;

}

}

其实,如果我们能够清楚地知道Maven的标准目录布局,就可以不使用archetype插件来创建工程原型;如果我们要定制个性的目录布局,那么就更没有必要使用archetype插件了。

如何用maven将java8写的代码编译为java6平台的

在一般的Java应用开发过程中,开发人员使用Java的方式比较简单。打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了。这种开发模式背后的过程是:开发人员编写的是Java源代码文件(.java),IDE会负责调用Java的编译器把Java源代码编译成平台无关的字节代码(byte code),以类文件的形式保存在磁盘上(.class)。Java虚拟机(JVM)会负责把Java字节代码加载并执行。Java通过这种方式来实现其“编写一次,到处运行(Write once, run anywhere)” 的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。

maven 是javaweb么

maven和javaweb没有任何关系

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

maven怎么优先使用jre系统库

当使用Maven构建Java项目时,默认情况下,Maven会使用项目中指定的JDK版本中的Java库,而不是使用系统中安装的JRE版本中的Java库。如果您希望优先使用系统中的JRE库而不是JDK库,可以按照以下步骤进行配置:

在项目的pom.xml文件中添加以下build配置:

xml

Copy code

build

plugins

plugin

groupIdorg.apache.maven.plugins/groupId

artifactIdmaven-compiler-plugin/artifactId

version3.8.1/version

configuration

forktrue/fork

executable${JAVA_HOME}/bin/javac/executable

compilerVersion11/compilerVersion

source11/source

target11/target

compilerArgs

arg--release/arg

arg11/arg

/compilerArgs

systemPropertyVariables

java.home${env.JAVA_HOME}/java.home

/systemPropertyVariables

/configuration

/plugin

/plugins

/build

在上面的配置中,executable指定了要使用的Java编译器的路径,这里使用了${JAVA_HOME}/bin/javac,即使用环境变量JAVA_HOME指定的JRE路径下的javac命令。systemPropertyVariables指定了要使用的JRE路径,这里使用了环境变量JAVA_HOME。这样,Maven将使用环境变量JAVA_HOME指定的JRE路径中的Java库。

2. 确保您的系统中安装了JRE,并设置了环境变量JAVA_HOME,该变量指向JRE的安装路径。您可以通过在命令行窗口中输入echo $JAVA_HOME来检查该变量是否设置正确。

3. 在命令行窗口中进入项目的根目录,然后运行以下命令来构建项目:

bash

Copy code

mvn clean install

这将使用配置的JRE库来构建项目。

通过以上配置,您可以优先使用系统中的JRE库而不是JDK库来构建Java项目。

maven什么时候学

在学框架的时候一起学。Maven,用于Java项目的构建,依赖管理,项目信息管理的项目管理工具。使用maven可以管理很多个jar包,在学习框架的时候回导入很多包学生很不方便,学这个技术可以很好的帮助管理框架里面的各种包。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/6069.html