开发者社区> 问答> 正文

Maven打包成jar时出了很多问题。Missing artifact?报错

    我在做的是一个游戏项目:暂时有两个工程,一个是gameCommon  放一些每个工程都会运用到的常量和服务器配置文件,没有引用到任何的jar包。 第二个是游戏主项目,引用了各种开猿jar包。我该如何编写pom文件才能使工程正常打出jar呢? 

这是common的pom:<parent>报错啊,说什么Missing artifact 缺父类导入的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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>GameCommon</artifactId>
	<parent>
	    <groupId>com.oasgames.dota</groupId>
	    <artifactId>GameServer</artifactId>
	    <version>0.0.1-SNAPSHOT</version>
	    <relativePath>../GameServer</relativePath>
  	</parent>
</project>



这是主模块的pom

<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.oasgames.dota</groupId>
	<artifactId>GameServer</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>utf8</encoding>
				</configuration>
			</plugin>
			
			<plugin>
    			<groupId>org.apache.felix</groupId>
    			<artifactId>maven-bundle-plugin</artifactId>
    			<extensions>true</extensions>
			</plugin>
		</plugins>
	</build>
	
	<modules>
		<module>../GameCommon</module>
	</modules>
	<!-- 依赖的jar -->
	<dependencies>
		<dependency>
			<groupId>net.sourceforge.jexcelapi</groupId>
			<artifactId>jxl</artifactId>
			<version>2.6.10</version>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/GameCommon-0.0.1-SNAPSHOT.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>ibatis</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/ibatis-2.3.4.726.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>dom4j</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/dom4j.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>pool</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/commons-pool-1.6.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>proxool</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/proxool-0.9.1.jar</systemPath>
		</dependency>

		<dependency>
			<groupId>com.oasgames.dota</groupId>
			<artifactId>dao</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/ibatis-dao-2.jar</systemPath>
		</dependency>
		
		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<version>2.0.4</version>
			<type>bundle</type>
		</dependency>
	</dependencies>
</project>



大神们帮看下 ,这样合适吗?工程里有很多xls文件和properties文件,打包的时候打不上。还有,我刚开始学,感觉好多配置的地方有问题,大婶们帮看下吧,谢谢了。!

展开
收起
爱吃鱼的程序员 2020-06-20 17:08:01 1308 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    嗯,你这个确实有点儿乱。梳理了下,你分common和 GameServer

    其实不用模块,你可以对common单独编译后执行mnvcleaninstall后就可以在 GameServer中加个dependency就搞定了。

    回复 @bBugyang:如果你放在resource下肯定可以打包进去。恩,我工程里面的,excel文件和xml文件可以加载进来吗?我有一次运行的时候报错xls文件找不到打包的指令是mvnpackage吧?

    如果你非要使用模块,common和GameServer应该是两个模块,再在这两个模块上层目录加个pom.xml做为parent用来描述模块。在 GameServer中也可以引用 common模块。

    <systemPath>不是必须,因为你指定了依赖会自动从中央库下载jar,你这样指定反而失去了Maven的优势。

    关于模块的部分参考http://juvenshun.iteye.com/blog/305865

    <resource><directory>src/main/java</directory><excludes><exclude>**/*.java</exclude></excludes></resource>这个resources是干嘛的呢?中央库总找不到框架啊,我还运用的osc的第三方库也有些找不到的,也不知道是不是公司项目用了些偏门的框架、、
    2020-06-23 13:16:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Build Your Next ApacheSparkJob 立即下载
Project Fortis 立即下载
NO MORE "SBT ASSEMBLY":RETHINK 立即下载