云计算-Setting-up Maven in Cloud9(在Cloud9中设置Maven)

Installing Maven(安装Maven)

现在,了解如何使用AWS SDK来访问AWS产品。这并不简单。为了简化操作,我们将使用Apache Maven工具。Maven维护一组构建脚本,使我们能够构建程序,包括最新的SDK库,并提高程序在空间和加载时间方面的效率。例如,我们将使用Maven脚本仅包含代码中使用的类,这大大减少了程序的大小,从而减少了加载时间和存储空间,降低了AWS成本。

首先,你应该通过以下命令检查是否已安装Maven:

mvn -version

如果已经安装了Maven,则可以跳过整个主题。如果未安装Maven,将显示输出"mvn: command not found"。

以下三条命令将安装最新版本的Maven:

sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

上述命令通常不会显示任何输出。最后,我们使用以下命令安装Maven:

sudo yum install -y apache-maven

上述命令将生成大量输出。输入以下命令查看是否安装正确:

mvn -version

输出将显示类似以下内容:

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)
Maven home: /usr/share/apache-maven
Java version: 1.8.0_312, vendor: Red Hat, Inc.
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.amzn2.0.2.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.268-205.500.amzn2.x86_64", arch: "amd64", family: "unix"

至此,Maven安装完成。

Creating First Java App with AWS(创建第一个Java应用程序并使用AWS)

一旦安装了Maven,我们可以运行以下命令来创建一个新的Java应用程序。Maven的一个有用选项是它可以为Java项目设置目录结构。我们可以用一个简单的命令设置一个项目:

mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=au.edu.scu.app -DartifactId=myapp

此命令在当前目录中设置了一个项目,包含多个嵌套目录,如下图所示,展开所有文件夹后,文件树窗口显示如下:

尽管这看起来很复杂,但这是Java项目的标准结构。注意有一个'main'文件夹结构和一个'test'文件夹结构。高亮显示的文件pom.xml是Maven的配置文件,我们需要编辑它以指导Maven如何构建我们的项目。我们自动生成了三个源文件:

  • App.java - Java程序主文件(包含main()函数)
  • AppTest.java - 用于执行单元测试的Java程序
  • pom.xml - Maven项目配置文件(上面已高亮显示)

App.java中的Java程序如下:

package au.edu.scu.app;

public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

注意Maven如何在第一行设置包名,这反映在目录结构中。再次强调,这是一个非常简单的Java"Hello World"程序。测试应用程序也是一个简单的结构,你可以在空闲时间查看。

Configuring POM File(配置POM文件)

对我们来说,最重要的文件是pom.xml文件,其内容如下。pom代表"项目对象模型"。

此文件提供有关如何构建和打包项目的重要信息。我们将向该文件添加许多额外的标签,例如添加AWS SDK库以访问AWS云产品。提供的信息包括以下标签:

  • <groupId> - 标准项目前缀
  • <artifactId> - 生成包的名称
  • <packaging> - 包含生成包的文件类型
  • <version> - 附加到生成包名称的版本
  • <dependencies> - 必须包含在生成包中的包

我们将在使用AWS包时添加<dependency>标签。此POM文件仅包含junit依赖项,这是Java单元测试包。我们还需要添加用于AWS的依赖项,这些依赖项旨在重新组织我们的输出包。这些将有助于满足一些独特的AWS结构,例如AWS Lambdas不是程序而是云中执行的函数。AWS Lambdas将在单独的实验课中讨论。

我们的第一步是用这个版本替换当前的pom.xml文件。

确保你最初使用此配置。maven-compiler插件确保使用Java 1.8。依赖管理确保使用2.5版本的SDK,software.amazon.awssdk依赖项是我们将使用的2.5版本SDK的软件包前缀。在你的AWS开发中使用一致的版本非常重要,因为AWS SDK版本不兼容,例如,2.0版本不兼容2.5版本。

请注意,未来我们还将访问我们程序使用的特定AWS SDK v2包。我们将在使用不同的AWS包和产品时向此文件添加<dependency>标签。此POM文件仅包含junit依赖项,这是Java单元测试包。我们还将添加用于AWS的依赖项,这些依赖项旨在重新组织我们的输出包。这些将有助于满足一些独特的AWS结构,例如AWS Lambdas不是程序而是云中执行的函数。

要构建我们的程序,我们需要导航到pom.xml文件所在的目录。可以在bash终端中使用"cd myapp"命令执行此操作,当前pom.xml位于"myapp"目录中。

cd myapp

然后我们运行以下命令来构建(以及编译)我们的程序。

mvn package

这将在"myapp/target/"目录中生成一个可执行的JAR文件(即"myapp-1.0.jar")。要运行此JAR文件,你需要将默认目录设置为项目的根目录,该目录包含maven将使用的pom.xml文件。目标目录中将有其他文件,这些文件用于构建JAR文件以及你可以运行的单元测试程序,如果你添加了单元测试。

要运行JAR文件,可以使用以下命令:

java -cp target/myapp-1.0.jar au.edu.scu.app.App

注意我们需要指定目录"target/",因为这是Maven放置可执行代码的JAR文件的位置。这有点复杂,因为maven配置文件没有指定哪个类包含首先执行的main()函数。类名au.edu.scu.app.App是包含main()函数的类的完全限定名称(包含包名)。

Shade Plugin(Shade插件)

为了解决上一节中提到的问题,我们可以使用maven shade插件。我们将在许多未来的示例中使用shade插件,但对于此示例,我们需要将以下插件定义添加到pom.xml文件中的<plugins>标签内。你可以将其放在"maven-compiler-plugin"定义之前。只需复制以下代码并粘贴到你的pom.xml中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.2.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>au.edu.scu.app.App</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

shade插件通过修改JAR文件来指定主类,我们可以通过以下命令运行程序:

java -jar target/myapp-1.0.jar

shade插件还有其他用途,我们将在后面看到。我们将使用它来构建各种Amazon服务所需的JAR文件,这些服务需要可执行代码,但不一定是可执行程序。

相关推荐
一丝晨光14 分钟前
C++、Ruby和JavaScript
java·开发语言·javascript·c++·python·c·ruby
天上掉下来个程小白16 分钟前
Stream流的中间方法
java·开发语言·windows
xujinwei_gingko27 分钟前
JAVA基础面试题汇总(持续更新)
java·开发语言
liuyang-neu29 分钟前
力扣 简单 110.平衡二叉树
java·算法·leetcode·深度优先
一丝晨光40 分钟前
Java、PHP、ASP、JSP、Kotlin、.NET、Go
java·kotlin·go·php·.net·jsp·asp
罗曼蒂克在消亡43 分钟前
2.3MyBatis——插件机制
java·mybatis·源码学习
_GR1 小时前
每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java
java·数据结构·c++·算法·动态规划
无限大.1 小时前
c语言200例 067
java·c语言·开发语言
余炜yw1 小时前
【Java序列化器】Java 中常用序列化器的探索与实践
java·开发语言
攸攸太上1 小时前
JMeter学习
java·后端·学习·jmeter·微服务