Maven为web项目同时打jar和war包,deploy时只上传jar包的配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.class8</groupId>
  <artifactId>edu_course</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>edu_course Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <distributionManagement>
  	<repository>
  		<id>nexus-releases-repository</id>
  		<name>Nexus Resleases Repository</name>
  		<url>http://xxx.xxx.xxx.xxx:8081/nexus/content/repositories/releases</url>
  	</repository>
  	<snapshotRepository>
  		<id>nexus-snapshots-repository</id>
  		<name>Nexus Snapshot Repository</name>
  		<url>http://xxx.xxx.xxx.xxx:8081/nexus/content/repositories/snapshots</url></span>
  	</snapshotRepository>
  </distributionManagement>
  <build>
    <finalName>edu_course</finalName>
    <plugins>
    	<plugin>
    		<artifactId>maven-compiler-plugin</artifactId>
    		<configuration>
    			<source>1.7</source>
    			<target>1.7</target>
    		</configuration>
    	</plugin>
    	<plugin>
    		<artifactId>maven-war-plugin</artifactId>
    		<configuration>
    			<archiveClasses>true</archiveClasses>
    		</configuration>
    	</plugin>
    	<plugin>
    		<artifactId>maven-jar-plugin</artifactId>
    		<executions>
    			<execution>
    				<id>interface</id>
    				<phase>package</phase>
    				<goals>
    					<goal>jar</goal>
    				</goals>
    				<configuration>
		    			<!-- 添加classifier修饰以区别于war,保证上传成功 -->
		    			<classifier>interface</classifier>
		    			<includes>
		    				<include>**/com/class8/service/</include>
		    				<include>**/com/class8/entity/</include>
		    			</includes>
		    			<excludes>
		    				<exclude>**/com/class8/service/impl/</exclude>
		    			</excludes>
		    		</configuration>
    			</execution>
    		</executions>
    	</plugin>
    	<!-- deploy时只上传jar包到远程仓库的配置 -->
    	<plugin>
    		<artifactId>maven-deploy-plugin</artifactId>
    		<executions>
				 <execution>
				 	<id>default-deploy</id>
		            <phase>deploy</phase>
		            <goals>
		            	<goal>deploy</goal>
		            </goals>
		            <!-- skip默认deploy插件的执行 -->
				 	<configuration>
				 		<skip>true</skip>
				 	</configuration>
				 </execution>
				 <execution>
				 	<id>deploy-file</id>
				 	<phase>deploy</phase>
				 	<goals>
				 		<goal>deploy-file</goal>
				 	</goals>
				 	<configuration>
				 		<!-- 开发阶段上传到snapshot仓库,上线阶段上传到release仓库 -->
				 		<repositoryId>${project.distributionManagement.snapshotRepository.id}</repositoryId>
				 		<url>${project.distributionManagement.snapshotRepository.url}</url>
				 		<file>${project.build.directory}/${project.artifactId}-interface.jar</file>
 						<groupId>${project.groupId}</groupId>
				 		<artifactId>${project.artifactId}</artifactId>
						<version>${project.version}</version>
				 		<classifier>interface</classifier>
				 	</configuration>
				 </execution>
    		</executions>
    	</plugin>
    </plugins>
  </build>
</project>

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是一条Maven的错误信息,提示没有为此构建设置任何目标(goal),必须指定有效的生命周期(lifecycle)阶段或者以插件前缀(plugin-prefix)为格式的插件(goal),例如:<plugin-prefix>:<goal>或<plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>。可用的生命周期阶段括:validate、initialize、generate-sources、process-sources、generate-resources、process-resources、compile、process-classes、generate-test-sources、process-test-sources、generate-test-resources、process-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify、install、deploy、pre-clean、clean、post-clean、pre-site、site、post-site、site-deploy。需要检查并重新指定构建目标。 ### 回答2: 这个错误提示意味着该构建项目没有指定目标,需要在命令行中指定合法的生命周期阶段或目标。命令格式应为 <插件前缀>:<目标> 或者 <插件组ID>:<插件Artifact ID>[:<插件版本>]:<目标>。可用的生命周期阶段有 validate、initialize、generate-sources、process-sources、generate-resources、process-resources、compile、process-classes、generate-test-sources、process-test-sources、generate-test-resources、process-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify、install、deploy、pre-clean、clean、post-clean、pre-site、site、post-site、site-deploy。 构建项目需要指定以目标为核心的操作,才能使构建动作按预期进行。如果没有指定目标,就会导致构建失败。因此,需要认真查看构建文档或者示例代码,了解具体的构建方式,并在构建命令中正确指定需要执行的目标。此外,需要注意选择合适的插件和版本,避免出现插件版本不兼容或者过的情况,从而保证构建的顺利进行。 ### 回答3: 该错误信息来源于Maven构建工具。Maven是一个基于项目对象模型(POM)的构建工具,它可以通过一系列指定的阶段(lifecycle phase)执行任务(goal)来完成构建。在使用Maven构建项目,如果出现“no goals have been specified for this build”的错误信息,那么可能是因为指定的任务(goal)或阶段(lifecycle phase)无效或不存在。 解决该问题的方法是需要在命令中指定存在的任务或阶段。可以通过在命令中添加有效的任务或阶段,或者在pom.xml文件中的build标签中添加指定的任务或阶段来解决。下面给出Maven常用的生命周期阶段及其作用: validate:验证项目是否正确且所有必须的信息可用。 initialize:初始化构建状态。 generate-sources:生成源代码。 process-sources:处理源代码,例如过滤、编译等。 generate-resources:生成资源文件。 process-resources:处理资源文件,例如复制、压缩等。 compile:编译源代码。 process-classes:处理编译后的代码,例如进行字节码增强、生成一些元数据等。 generate-test-sources:生成测试用例的源代码。 process-test-sources:处理测试用例的源代码。 generate-test-resources:生成测试用例的资源文件。 process-test-resources:处理测试用例的资源文件。 test-compile:编译测试用例。 process-test-classes:处理编译好的测试用例。 test:运行测试。 prepare-package:在运行打之前执行一些构建操作。 package:打构建的项目,生成jarwar等文件。 pre-integration-test:在集成测试之前执行一些操作。 integration-test:执行集成测试。 post-integration-test:在集成测试之后执行一些操作。 verify:执行额外的验证操作以验证打的项目是否正确并达到质量标准。 install:将安装到本地仓库,可以供本地其他项目使用。 deploy:将拷贝到远程的仓库。 综上所述,处理该错误最关键的一点是要明确构建的目标,选择一个或多个生命周期阶段,或者指定一个或多个任务(goal)来完成该构建过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值