当我创建Spring Boot应用程序时,我可以看到mvnw和mvnw。CMD文件在项目的根目录。这两个文件的目的是什么?
当前回答
到目前为止,最好的选择是使用maven容器作为构建工具。像这样的mvn.sh脚本就足够了:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
其他回答
到目前为止,最好的选择是使用maven容器作为构建工具。像这样的mvn.sh脚本就足够了:
#!/bin/bash
docker run --rm -ti \
-v $(pwd):/opt/app \
-w /opt/app \
-e TERM=xterm \
-v $HOME/.m2:/root/.m2 \
maven mvn "$@"
这些文件来自Maven包装器。它的工作原理类似于Gradle包装器。
这允许您运行Maven项目,而无需在路径上安装和显示Maven。如果没有找到,它会下载正确的Maven版本(据我所知,默认是在您的用户主目录中)。
mvnw文件用于Linux (bash)和mvnw. xml文件。cmd用于Windows环境。
要创建或更新所有必要的Maven Wrapper文件,执行以下命令:
mvn -N io.takari:maven:wrapper
要使用不同版本的maven,您可以如下所示指定版本:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
这两个命令都需要maven on PATH(将maven bin的路径添加到PATH on System Variables),如果你的项目中已经有mvnw,你可以使用./mvnw来代替命令中的mvn。
简单的回答:在终端中运行Maven和Gradle,不需要手动安装。
它的例子:
./gradlew clean build
./gradlew bootRun
Maven的例子:
./mvnw clean install
./mvnw spring-boot:run
“执行任何Gradle构建的推荐方法都是借助Gradle Wrapper(简而言之就是“Wrapper”)。Wrapper是一个脚本,它调用一个已声明的Gradle版本,如果需要的话,可以预先下载它。因此,开发人员可以快速启动并运行Gradle项目,而不必遵循手动安装过程,从而为公司节省时间和金钱。”
Gradle还会添加一些与Maven文件Gradlew和Gradle.bat相对应的特定文件
命令mvnw使用Maven,缺省情况下下载到~/。M2 /包装首次使用。
Maven的URL在每个项目的.mvn/wrapper/ Maven -wrapper.properties中指定:
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
要更新或更改Maven版本,请调用以下命令(对于多模块项目,请记住—非递归):
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
或者只是修改。mvn/wrapper/maven-wrapper。手动属性。
要使用Maven从头开始生成包装器(你需要在PATH中运行它:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
对于需要特定版本Maven的项目(或者根本不想安装Maven的用户),Maven Wrapper是一个极好的选择。我们可以只使用特定于项目的包装器脚本,而不是在操作系统中安装它的多个版本。
mvnw:它是一个可执行的Unix shell脚本,用于取代完全安装的Maven
mvnw。cmd:用于Windows环境
用例
包装器应该适用于不同的操作系统,例如:
Linux OSX 窗户 Solaris
之后,我们可以在Unix系统上运行我们的目标:
./mvnw clean install
Batch命令:
./mvnw.cmd clean install
如果包装器属性中没有指定的Maven,它将被下载并安装在$USER_HOME/文件夹中。系统的M2 /wrapper/dist。
Maven Wrapper插件
Maven Wrapper插件,在一个简单的Spring Boot项目中进行自动安装。
首先,我们需要进入项目的主文件夹并运行以下命令:
mvn -N io.takari:maven:wrapper
我们还可以指定Maven的版本:
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
选项-N表示-非递归,这样包装器将只应用于当前目录的主项目,而不是任何子模块。
来源1(进一步阅读):https://www.baeldung.com/maven-wrapper
推荐文章
- 禁用IntelliJ星(包)导入?
- 面试问题:检查一个字符串是否是另一个字符串的旋转
- 将文件加载为InputStream的不同方法
- 到底是什么导致了堆栈溢出错误?
- 为什么Android工作室说“等待调试器”如果我不调试?
- Java:路径vs文件
- ExecutorService,如何等待所有任务完成
- Maven依赖Servlet 3.0 API?
- 如何在IntelliJ IDEA中添加目录到应用程序运行概要文件中的类路径?
- getter和setter是糟糕的设计吗?相互矛盾的建议
- Android room persistent: AppDatabase_Impl不存在
- Java的String[]在Kotlin中等价于什么?
- Intellij IDEA上的System.out.println()快捷方式
- 在pom.xml中的<依赖>下的<作用域>是为了什么?
- 使用Spring RestTemplate获取JSON对象列表