易学笔记--maven生成项目骨架时报错ResourceManager : unable to find resource,无奈自己用python写代码自动生成archetype.xml脚本

  • 生成骨架时生成archetype.xml脚本
  1. 问题描述:没有方法通过*号批量匹配文件

    [INFO] ----------------------------------------------------------------------------

    [INFO] Using following parameters for creating project from Old (1.x) Archetype: gdpost-framework-archetype-client:1.0-SNAPSHOT

    [INFO] ----------------------------------------------------------------------------

    [INFO] Parameter: basedir, Value: D:\maven-cmd

    [INFO] Parameter: package, Value: mm

    [INFO] Parameter: groupId, Value: mm

    [INFO] Parameter: artifactId, Value: nn

    [INFO] Parameter: packageName, Value: mm

    [INFO] Parameter: version, Value: 1.0-SNAPSHOT

    [ERROR] ResourceManager : unable to find resource 'archetype-resources/src/main/resources/static/js/bsn/example/*.js' in any resource loader.

  2. 解决方法:

  1. python脚本:
    #!usr/bin/python
    # encoding: utf-8
    # -*- coding: utf-8 -*-
      
    import os  
    import sys  
    
    #创建archetype.xml文件
    #project_dir:项目目录 
    #artifactId:项目名称
    def create_archetype(argv):
    	projectDir = argv[0]
    	artifactId = argv[1]
    	real_project_dir = projectDir + "/src/main/resources/archetype-resources"
    	
    	if(os.path.exists(real_project_dir) == False):
    		print("目录:" + real_project_dir + "不存在")
    		return []
    	
    	#判断src\main\java目录是否存在
    	listsubdir = ["src/main/java","src/test/java","src/main/resources","src/test/resources"]
    	#listsubdir = ["src/main/java"]
    	#分配四个嵌套列表
    	listfiles = [list(),list(),list(),list()]
    	
    	for (index,subdir) in enumerate(listsubdir):
    		 #返回一个目录和文件列表
    		curdir = real_project_dir + "/" + subdir
    		if(os.path.exists(curdir) == False):
    			print("======目录:" + real_project_dir + "不存在,继续下一个目录=======")
    			continue
    		#递归获取所有文件
    		getAllfile2list(curdir,index,listfiles)
    	#根据listfiles写入文件
    	savetofile(projectDir,artifactId,listfiles)
    		
    	return listfiles
    
    #递归获取所有文件
    def getAllfile2list(startdir,curindex,listfiles):
    	
    	files = os.listdir(startdir)
    	for curfile in files:
    		curdir = startdir + "/" + curfile
    		#print(curdir)
    		#如果是目录则递归
    		if os.path.isdir(curdir) == True:
    			getAllfile2list(curdir,curindex,listfiles)
    	 #如果是文件则加入列表
    		if os.path.isfile(curdir) == True:
    			listfiles[curindex].append(curdir)
    
    #按段写入文件
    def savesegmenttofile(file,outkey,inkey,sublist):
    	keywork = "archetype-resources/"
    	
    	file.writelines("<" + outkey + ">\n")
    	
    	for sub in sublist:
    		if sub.find(keywork) >=0:
    			sub = sub.split(keywork)[1]
    		file.writelines("<" + inkey + ">" + sub + "</" + inkey + ">\n")
    	  
    	file.writelines("</" + outkey + ">\n")		
    	
    		
    #根据listfiles写入文件
    def savetofile(projectDir,artifactId,listfiles):
    	#文件写入开始
    	filename = projectDir + "/archetype_auto.xml"
    	print("#文件写入开始:" + filename)
    	file = open(filename,'w')
    	file.writelines("<archetype>\n")
    	file.writelines("<id>" + artifactId + "</id>\n")
    	
    	#src/main/java有值
    	outkeylist = ["sources","testSources","resources","testResources"]
    	inkeylist = ["source","resource"]
    	
    	#循环按段写入文件
    	for (index,sublist) in enumerate(listfiles):
    		if len(sublist) >= 0:
    			if index <= 1:
    				savesegmenttofile(file,outkeylist[index],inkeylist[0],sublist)
    			else:
    				savesegmenttofile(file,outkeylist[index],inkeylist[1],sublist)
    
    	file.writelines("</archetype>\n")
    	file.flush()
    	file.close()
    	print("#文件写入结束:" + filename)
    				
    if __name__ == '__main__':  
        listfiles = create_archetype(sys.argv[1:])
        #print(listfiles)

     

  2. 调用python生成archetype.xml:

    [D:\maven-cmd]$ python create_archetype.py D:/maven-cmd/ yxbj_maven_archetype  yxbj_maven_artifactId  #参数一:项目骨架所在的目录  参数二:artifactId

    ======目录:D:/maven-cmd/yxbj_maven_archetype/src/main/resources/archetype-resources不存在,继续下一个目录=======

    #文件写入开始:D:/maven-cmd/ yxbj_maven_archetype /archetype_auto.xml

    #文件写入结束:D:/maven-cmd/ yxbj_maven_archetype/ etype-client/archetype_auto.xml

  3. 生成的文件放在 archetype_auto.xml 存放在 项目骨架所在的目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易学笔记(qq:1776565180)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值