maven相关知识点

1.maven跳过llt编译命令:

mvn clean install -Dmaven.test.skip=true

2.maven项目中pom文件节点详解:

1)插件仓库的配置是根据pluginRepositories和pluginRepository节点元素进行配置,如下:

<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>Team Nexus Repository</name>
        <url>http://localhost/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

2)依赖的配置是根据repositories和repository节点元素进行配置,如下:

<repositories>
    <repository>
        <id>nexus</id>
        <name>Team Nexus Repository</name>
        <url>http://localhost/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

3)mvn install  会将项目生成的构件安装到本地Maven仓库,

mvn deploy 用来将项目生成的构件分发到远程Maven仓库。

本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。

我们需要配置POM的distributionManagement来指定Maven分发构件的位置,如:

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>releases</name>
        <url>http://localhost/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>snapshots</name>
        <url>http://localhost/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

Maven区别对待release版本的构件和snapshot版本的构件,snapshot为开发过程中的版本,实时,但不稳定,release版本则比较稳定。Maven会根据你项目的版本来判断将构件分发到哪个仓库。

一般来说,分发构件(如jar)到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息:

<settings>    

  ...    

    <servers>    

        <server>    

            <id>nexus-releases</id>    

            <username>admin</username>    

            <password>admin123</password>    

        </server>    

        <server>    

            <id>nexus-snapshots</id>    

            <username>admin</username>    

            <password>admin123</password>    

        </server>      

    </servers>    

...    

</settings>

3.中央仓库

中央仓库即默认的远程仓库,maven在安装的时候,自带的就是中央仓库的配置。该配置文件在${M2_HOME}/lib/maven-2.0.10-uber.jar里定义,打开该文件能找到超级POM:\org\apache\maven\project\pom-4.0.0.xml ,它是所有Maven POM的父POM,所有Maven项目继承该配置。
如果要更改中央仓库,则需要修改setting.xml,比如:

<mirrors>
    ...
    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
    ...
</mirrors>

这里<mirrorOf>的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像(用户也可以使用同样的方法配置其他仓库的镜像) 

注:私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

4.默认打包生成的jar是不能够直接运行main方法的,因为带有main方法的类信息不会添加到manifest中(我们可以打开jar文件中的META-INF/MANIFEST.MF文件,将无法看到Main-Class一行)。为了生成可执行的jar文件,我们需要借助spring-boot-maven-plugin插件,配置该插件如下:

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <version>1.3.3.RELEASE</version>
   <executions>
      <execution>
         <goals>
            <goal>repackage</goal>
         </goals>
         <configuration>  
             <transformers>  
                 <transformer>  
                     <mainClass>com.mycom.myapp.HelloMaven</mainClass>  
                 </transformer>  
             </transformers>  
         </configuration>
      </execution>
   </executions>
</plugin>

项目在打包时会将该信息放到MANIFEST中。现在执行mvn clean install,待构建完成之后打开target/目录,可以看到hello-maven-1.0-SNAPSHOT.jar和original-hello- maven-1.0-SNAPSHOT.jar,前者是带有Main-Class信息的可执行jar,后者是原始的jar,打开hello- maven-1.0-SNAPSHOT.jar的META-INF/MANIFEST.MF,可以看到它包含这样一行信息:
Main-Class:com.mycom.myapp.HelloMaven
现在,在项目根目录中执行该jar文件:D:\code\hello-world > java-jar target\hello-maven-1.0-SNAPSHOT.jar,可以得到正确的输出了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值