linuxcentos将本地库JAR/arr批量导入到Nexus3.x

  • 背景
    我们现在要搞一个私服maven来管理对应的依赖包,需要上传包。用nexus只能单个文件搞,批量导入不行,而且还要单独配置groupID什么的。不多BB,上教程
  1. 建脚本
    在这里插入图片描述
vi mavenimport.sh

内容是这个

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
 
while getopts ":r:u:p:" opt; do
 case $opt in
     r) REPO_URL="$OPTARG"
     ;;
     u) USERNAME="$OPTARG"
     ;;
     p) PASSWORD="$OPTARG"
     ;;
 esac
done
 
find . -type f -not -path './mavenUpload\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

  1. 启动脚本

注意
改成你自己的的,其中maven推送的地址在这里找
在这里插入图片描述在这里插入图片描述
**#将此脚本复制并运行到包含文件的存储库目录的根目录
#此脚本试图明确排除上载本身,因此脚本名称很重要
**
也就是说,你要上传哪些文件,你把你文件放在对应的目录下,比如你要上传com这个文件夹,你就放在对应的目录
在这里插入图片描述

# 脚本授权
chmod +x mavenimport.sh
# 执行脚本
./mavenimport.sh -u admin -p admin123 -r http://地址/repository/repository/

自己遇到的异常
如果遇到
-bash: ./mavenimport.sh: /bin/bash^M: bad interpreter: No such file or directory
dos2unix mavenimport.sh
-bash: dos2unix: command not found

错误信息中的 ^M 表示回车符 (Carriage Return),这通常是由于 Windows 平台上的文本文件在 Unix/Linux 平台上执行时引起的。

可以使用 dos2unix 命令将脚本文件转换为 Unix/Linux 格式

dos2unix mavenimport.sh

如果系统中没有安装 dos2unix 命令,你可以尝试使用 sed 命令来移除回车符。

sed -i 's/\r//' mavenimport.sh

然后你应该能够正确运行脚本。

如果老鸟发现博文有问题,欢迎指点一二

<think>我们之前已经创建了一个使用ES6模块语法的工具。现在需要将其转换为CommonJS语法(使用require和module.exports),因为server.js中使用了CommonJS的require语法。 项目结构不变: project/ ├── util/ │ ├── lib/ │ │ ├── arr.js │ │ └── str.js │ └── index.js └── server.js 修改步骤: 1. 修改arr.js和str.js,使用module.exports导出函数。 2. 修改util/index.js,使用require引入子模块,然后重新导出(或者合并导出)。 3. 确保server.js中通过require引入的是正确的路径。 具体代码修改如下: 1. 修改`util/lib/arr.js`: ```javascript // 获取数组元素数量 const getArrayNum = (arr) => { if (!Array.isArray(arr)) return 0; return arr.length; }; // 检查用户名格式 const checkUser = (username) => { return /^[a-zA-Z0-9_]{4,16}$/.test(username); }; // 使用CommonJS导出 module.exports = { getArrayNum, checkUser }; ``` 2. 修改`util/lib/str.js`: ```javascript // 检查密码强度 const checkPwd = (password) => { if (password.length < 8) return false; const hasUpperCase = /[A-Z]/.test(password); const hasLowerCase = /[a-z]/.test(password); const hasNumber = /[0-9]/.test(password); return hasUpperCase && hasLowerCase && hasNumber; }; // 使用CommonJS导出 module.exports = { checkPwd }; ``` 3. 修改`util/index.js`(入口文件): 有两种方式导出: 方式一:分别导入然后重新组合成一个对象 ```javascript const arrUtils = require(&#39;./lib/arr&#39;); const strUtils = require(&#39;./lib/str&#39;); // 合并成一个工具对象 const utils = { ...arrUtils, ...strUtils }; // 导出合并后的工具对象 module.exports = utils; ``` 方式二:直接导出所有方法 ```javascript module.exports = { ...require(&#39;./lib/arr&#39;), ...require(&#39;./lib/str&#39;) }; ``` 4. 修改`server.js`: ```javascript // 导入utils const utils = require("./util"); // 注意:这里路径是"./util",因为util是一个文件夹,会默认加载util/index.js // 调用方法 console.log(utils.getArrayNum([1,2,3])); // 应该输出5 console.log(utils.checkUser("test_user")); // 输出true或false console.log(utils.checkPwd("Password123")); // 输出true console.log("hello :", utils); ``` 注意:如果util文件夹下没有package.json文件,Node.js在require一个文件夹时会默认加载该文件夹下的index.js。 如果遇到路径问题,请检查: - 路径是否正确(相对路径) - 文件扩展名(在CommonJS中,.js扩展名可以省略) 这样,我们就将整个工具转换为了CommonJS语法,并且可以在server.js中通过require引入使用。 但是,请注意:在Vue项目中,通常我们使用ES6模块语法。如果你在Vue组件中使用这个工具,应该使用import语法。但是,由于问题中要求server.js使用CommonJS,所以我们做了转换。 如果项目是Vue CLI创建的,默认支持ES6,那么建议使用ES6模块语法。如果是在Node.js环境中运行(比如使用Vue SSR),则可能需要CommonJS。 因此,根据你的运行环境选择模块语法。 最后,提供相关问题: §§相关问题§§: 1. 在Vue项目中,如何同时支持CommonJS和ES6模块的导入导出? 2. Vue组件中,使用import和require导入模块有什么区别? 3. 在Vue CLI创建的项目中,如何配置Babel以支持特定的模块语法? 4. 如何将自定义工具发布为npm,使其同时支持CommonJS和ES6模块?</think>### 使用 CommonJS 语法实现自定义工具 #### 项目结构(CommonJS 版本) ``` project/ ├── util/ │ ├── lib/ │ │ ├── arr.js │ │ └── str.js │ └── index.js └── server.js ``` #### CommonJS 实现代码 **1. 数组工具文件 (`util/lib/arr.js`):** ```javascript // 获取数组元素数量 const getArrayNum = (arr) => { if (!Array.isArray(arr)) return 0; return arr.length; }; // 检查用户名格式 const checkUser = (username) => { return /^[a-zA-Z0-9_]{4,16}$/.test(username); }; // CommonJS 导出 module.exports = { getArrayNum, checkUser }; ``` **2. 字符串工具文件 (`util/lib/str.js`):** ```javascript // 检查密码强度 const checkPwd = (password) => { if (password.length < 8) return false; const hasUpperCase = /[A-Z]/.test(password); const hasLowerCase = /[a-z]/.test(password); const hasNumber = /[0-9]/.test(password); return hasUpperCase && hasLowerCase && hasNumber; }; // CommonJS 导出 module.exports = { checkPwd }; ``` **3. 入口文件 (`util/index.js`):** ```javascript // CommonJS 导入子模块 const arrUtils = require(&#39;./lib/arr&#39;); const strUtils = require(&#39;./lib/str&#39;); // 合并导出所有工具方法 module.exports = { ...arrUtils, ...strUtils }; ``` **4. 主应用文件 (`server.js`):** ```javascript // CommonJS 导入工具 const utils = require(&#39;./util&#39;); // 在 Vue 应用中使用 const Vue = require(&#39;vue&#39;); const app = new Vue({ el: &#39;#app&#39;, data: { username: &#39;VueDev&#39;, password: &#39;Secure123&#39;, items: [1, 2, 3, 4, 5] }, computed: { userValidation() { return utils.checkUser(this.username) ? &#39;有效用户&#39; : &#39;无效用户&#39;; }, passwordStrength() { return utils.checkPwd(this.password) ? &#39;强密码&#39; : &#39;弱密码&#39;; }, arrayInfo() { return `数组含 ${utils.getArrayNum(this.items)} 个元素`; } }, template: ` <div> <h3>工具函数验证结果</h3> <p>用户名: {{ username }} &rarr; {{ userValidation }}</p> <p>密码: {{ password }} &rarr; {{ passwordStrength }}</p> <p>{{ arrayInfo }}</p> </div> ` }); // 控制台输出验证 console.log(&#39;数组长度:&#39;, utils.getArrayNum([1, 2, 3, 4])); console.log(&#39;用户验证:&#39;, utils.checkUser(&#39;test_user&#39;)); console.log(&#39;密码验证:&#39;, utils.checkPwd(&#39;Password123&#39;)); ``` ### 关键实现点解释 1. **CommonJS 模块系统**: - 使用 `module.exports` 导出功能 - 使用 `require()` 导入模块 - 通过对象展开符 `...` 合并多个模块 2. **Vue 集成**: - 通过 `require(&#39;vue&#39;)` 引入 Vue 库 - 在计算属性中调用工具函数 - 使用模板语法展示验证结果 3. **模块结构优化**: - 入口文件 (`index.js`) 作为聚合点 - 子模块按功能分类组织 - 统一导出接口简化调用 4. **错误处理增强**: ```javascript // 增强型数组检查 const getArrayNum = (arr) => { if (arr === null || arr === undefined) return 0; if (!Array.isArray(arr)) { console.warn(&#39;getArrayNum 期望数组参数,收到:&#39;, typeof arr); return 0; } return arr.length; }; ``` ### 常见问题解决 **1. 模块路径问题:** ```javascript // 正确使用相对路径 const utils = require(&#39;./util&#39;); // 自动查找 util/index.js // 如果不在同一目录 const utils = require(&#39;../path/to/util&#39;); ``` **2. 循环依赖处理:** ```javascript // 模块A const moduleB = require(&#39;./moduleB&#39;); module.exports = { // ... }; // 模块B // 在函数内部延迟加载避免循环依赖 function useModuleA() { const moduleA = require(&#39;./moduleA&#39;); // ... } ``` **3. 动态导入(Node.js 14+):** ```javascript // 异步加载工具模块 async function loadUtils() { const utils = await import(&#39;./util&#39;); console.log(utils.checkUser(&#39;test&#39;)); } ``` **4. Vue 全局注册工具:** ```javascript // 在 Vue 应用中全局注册 Vue.prototype.$utils = require(&#39;./util&#39;); // 组件内使用 this.$utils.checkUser(this.username); ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hello Bug

谢谢老板,老板大气,老板硬邦邦

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

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

打赏作者

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

抵扣说明:

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

余额充值