Ant升级转Maven全面总结

将旧项目从Ant迁移到Maven的4个简单步骤 一段时间以来,我们一直在考虑将构建从蚂蚁移植到Maven。 它发生在上个月,实际上比我们预期的要简单。 根据我的经验,这里简要介绍了我们遵循的步骤。 我们的应用程序是一个具有多个框架和技术的企业Web应用程序构建,并作为单个WAR部署。 1.创建Maven项目目录结构 如Maven用户指南中所述,创建以下目录结构。 我们已经在项目的新文件夹下完成了此操作。 2.移动文件/文件夹并保... 阅读详情
AI摘要

本文详细介绍了从Ant项目升级到Maven的过程,包括项目结构转换、配置Maven插件、解决常见错误等内容,有助于理解Maven工作原理并顺利完成项目迁移。

1. 描述

最近一直在忙于Ant项目升级Maven的工作,在升级的过程中遇到了很多的错误。一路坎坎坷坷,今天终于交接完毕了。由于项目托管是使用GitLab CI(Continuous integration,简称CI),因此打包环境和本地有所不同。GitLab CI是GitLab的一部分,负责管理项目和用户界面,并允许对每次提交进行单元测试,在构建失败时显示警告消息。每当开发人员将代码推送到应用程序时,它都会构建和测试软件。 由于本人对Ant和Maven用的不是非常熟,所以在升级的过程碰壁很多,希望大家在升级的过程中对比Ant和Maven的不同之处,熟悉Maven结构插件,并学会基础的命令打包再进行升级操作。

2. 分析

首先了解Maven结构目录,Maven结构目录与普通的Web项目不同。
Maven结构如下:
在这里插入图片描述
升级项目结构如下:
在这里插入图片描述
清楚了Maven结构,再进行对比升级的项目,找出各自对应的目录存放位置。首先分析这次升级的目录结构,发现是有些类似Maven的。其中src/**/java相当于Maven的src/main/java,web相当于Maven的src/main/webapp。Eclipse在创建Maven项目时,默认是WebContent作为web,src/main/webapp没有被创建。如果需要使用src/main/webapp作为web目录,可以在src目录下自行创建目录,右键webapp文件夹->Build Path->Use as source folder即可作为web目录。

创建src/main/webapp作为web目录:
在这里插入图片描述

3、升级

1)、 ant项目转maven
选中项目右键->Configure->Convert to Maven Project

2)、 删除ant项目转maven操作之后自动新建的WebContent目录文件夹,这里使用的是web目录
在这里插入图片描述
3)、 删除自动新建resources文件夹
在这里插入图片描述
4)、删除lib下的所有jar包
首先备份所有jar,然后再删除项目下的jar,编辑pom.xml文件。

5)、在pom.xml中配置jar包依赖和插件
配置依赖jar是很费心思和时间的一项任务,需要对比本地lib版本号找对应的依赖,版本依赖不兼容可能会导致诸多问题发生,所以这一步需要细心耐心,避免不必要的麻烦。在https://mvnrepository.com/可以找到对应的dependency,直接复制对应版本的jar,无需自己手写配置。本地maven中央仓库所有jar包必须存有**.pom、.pom.sha1、.jar、**.jar.sha1文件,如果后缀存在.lastUpdated,说明没有下载成功,pom.xml运行会报错。由于有些repository并未收录,所以就肯定找不到这个.pom文件。依赖配置完,开始配置插件。

所需插件:

  • maven-war-plugin
    maven-war-plugin主要用在打war包时使用,这里指定webResources的directory为web/,主要是动态交互页面为主。filtering为false表示不过滤web/下的文件,为true表示过滤。当设置为true时,pom.xml配置的本地jar包引用会失效,下载的jar为pom.xml中定义的空文件,这在启动weblogic时是一个很严重的问题(过来人的深刻体验…)。packagingExcludes的作用是排除jar包,failOnMissingWebXml表示项目中不需web.xml,没有web.xml打包时会报web.xml is missing and 'failOnMissingWebXml' is set to true。
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<webResources>
						<resource>
							<!-- this is relative to the pom.xml directory -->
							<directory>web/</directory>
							<filtering>false</filtering>
							<includes>
								<include>*.*</include>
								<include>test1/</include>
								<include>test2/</include>
								<include>WEB-INF/</include>
							</includes>
						</resource>
					</webResources>
					<packagingExcludes>
						WEB-INF/lib/xml-apis-1.3.04.jar,
						WEB-INF/lib/xercesImpl-2.8.1.jar
					</packagingExcludes>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
  • maven-compiler-plugin
    maven-compiler-plugin主要用于编译class文件,定义编译版本。
		<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<compilerArgs>
						<arg>-verbose</arg>
						<arg>-Xlint:all,-options,-path</arg>
						<arg>-XDignore.symbol.file</arg>
					</compilerArgs>
					<compilerVersion>1.8</compilerVersion>
				</configuration>
			</plugin>

本次production打包测试环境是GitLab CI,使用定义的.gitlab-ci.yml进行打包。在交接测试时,本地测试完全正确,但是在GitLab CI始终没有class文件编译成功,打包却是正常的。java文件编译依赖于jdk,如果不配置则无法编译。几天的思考讨论,同事和我一致认为是对方的环境问题。查看.gitlab-ci.yml,发现一处问题。
image: maven:latest指定的是最新版本,并没有指定java版本。如果对方平台使用的是java9,那么与项目编译插件中配置1.8不匹配。这个问题真是深藏不露,很难了解到。解决办法是更改为image: maven:3-jdk-8即可正常编译。

.gitlab-ci.yml:

image: maven:latest

variables:
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
  MAVEN_REPO: "$CI_PROJECT_DIR/.m2"

cache:
  paths:
    - .m2/repository/

stages:
- compile
- build
- test
- report


compile:
  stage: compile
  script:
      - mvn $MAVEN_CLI_OPTS clean install compile
  artifacts:
    paths:
      - target/

build:
  stage: build
  script:
      - mvn war:war
  artifacts:
    paths:
      - target/

  • maven-clean-plugin
    主要用于清除上次打包的缓存
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-clean-plugin</artifactId>
				<version>2.3</version>
				<executions>
					<execution>
						<id>auto-clean</id>
						<phase>initialize</phase>
						<goals>
							<goal>clean</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<failOnError>false</failOnError>
				</configuration>
			</plugin>
  • build-helper-maven-plugin
    该插件非常重要,决定整个项目要打包的所有资源文件。这里定义了两个execution,add-resource和add-source。add-resource用于增加自定义配置文件,无需放在src/main/resource中也可在自动在打包时编译到WEB-INF/classes路径下。add-source用于配置多个子目录,解决默认只打包设置为source的目录困扰。一个项目有多个子功能模块,如果所有的功能模块都设置为source,那么在项目自动编译时是很耗时的事。在平时编程中,只需选择部分子模块设置为source即可,在编译时才让所有子模块编译打包。outputDirectory是src目录文件下编译后的存储路径。
		<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.8</version>
				<!-- 添加主资源文件目录 -->
				<executions>
					<execution>
						<!--自定义名称,不可重复 -->
						<id>add-resource</id>
						<!--指定绑定到生命周期 -->
						<phase>initialize</phase>
						<!--指定指定的目标,可添加多个 -->
						<goals>
							<goal>add-resource</goal>
						</goals>
					</execution>
					<execution>
						<id>add-source</id>
						<phase>initialize</phase>
						<goals>
							<goal>add-source</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<outputDirectory>${pom.basedir}/target/classes</outputDirectory>
					<resources>
						<!--资源文件目录,可添加多个 -->
						<resource>
							<directory>${pom.basedir}/src/base/java</directory>
							<filtering>true</filtering>
							<includes>
								<include>**/*.properties</include>
								<include>**/*.xml</include>
								<include>**/*.xls</include>
								<include>**/*.xlsx</include>
								<include>**/*.jpg</include>
								<include>**/*.ftl</include>
							</includes>
						</resource>
					</resources>
					<!-- 添加主源码目录 -->
					<sources>
						<source>${pom.basedir}/src/base/java</source>
						<source>${pom.basedir}/src/module1/java</source>
						<source>${pom.basedir}/src/module2/java</source>
					</sources>
				</configuration>
			</plugin>

6)、引入jar报错解决方法
方式一、:在pom.xml配置本地jar
下载失败的jar可以配置在lib目录中,并在pom中引入

<dependency>
	<groupId>org.jbarcode</groupId>
	<artifactId>jbarcode-0.2.8</artifactId>
	<version>0.2.8</version>
	<scope>system</scope>
	<systemPath>${pom.basedir}/web/WEB-INF/lib/jbarcode-0.2.8.jar</systemPath>
</dependency>

在这里插入图片描述
方式二、删除文件夹,重新下载
方式三、配置maven仓库的settings.xml,添加多个国内镜像,

<mirrors>
  <mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  </mirror>
</mirrors>

Tips:阿里云镜像下载速度快,有些maven官网下载失败的也可以下载,不过大部分使用官网的,如果项目迁移到他处,兼容性可能差一些。

方式四、在maven官网手动下载所需文件夹,点击View All既可以看见jar与.pom等文件。
在这里插入图片描述
这种方式不太推荐,可移植性较差,不同机都需要自己下载jar,易出错!

4、异常总结

1、警告:xxxx 是 Sun 的专用 API,可能会在未来版本中删除

事实上,sun.misc包都是sun公司的内部类,并没有在java api中公开过,不建议使用,所以使用这些方法是不安全的,
将来随时可能会从中去除,所以相应的应该使用替代的对象及方法
方法一、使用org.apache.commons.codec.binary.Base64类,commons-codec.jar
方法二、在pom.xml配置如下,新增一个rt.jar

				<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <encoding>UTF-8</encoding>
                        <compilerArguments>
                            <verbose />
                            <bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
                        </compilerArguments>
                    </configuration>
                </plugin>

2、编译时 error: package junit.framework does not exist
在pom.xml中加入:

<dependency> 
	<groupId>junit</groupId>
	<artifactId>junit-dep</artifactId>
	<version>4.8.2</version> 
</dependency> 

3、maven插件不执行-build-helper-maven-plugin pom中不执行
pom文件中删除围绕插件标签。

4、 Unrecognised tag: 'execution’
execution和其他的标签位置放错,这里应该查看build-helper-maven-plugin.pom,看它的配置是如何配的

5、File encoding has not been set, using platform encoding
配置

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

6、package javax.crypto does not exist
加上${java.home}/lib/jce.jar

		<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<compilerArgs>
						<arg>-extdirs</arg>
						<arg>${basedir}/WEB-INF/lib</arg>
					</compilerArgs>
					<compilerArguments>
						<verbose />
						<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
					</compilerArguments>
				</configuration>
			</plugin>

7、org.apache.axis.utils does not exist
导入axis-1.4.jar

8、error: cannot find symbol
有引用不存在类或者字符写错

9、Unrecognised tag: ‘repositories’(position: START_TAG seen … -->\n\t… @125:16) @ C:\Users\nicoletang.m2\settings.xml, line 125, column 16
缺少profiles标签

10、ant build错误checking for updates from apache.snapshots
.m2中的settngs.xml的<snapshots> <enabled>true</enabled> </snapshots> 设置为true

11、ant识别不了pom.xml,报package org.apache.commons.configuration does not exist
配置错误,正确配置如下:

	<target name="init" depends="clean">
		<echo message="*****初始化****" />
		<path id="maven-ant-tasks.classpath" path="${lib.dir}/maven-ant-tasks-2.1.3.jar" />
		<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" />

		<artifact:pom id="maven.project" file="pom.xml" />
		<artifact:dependencies pathId="maven.classpath" filesetid="maven.fileset">
			<pom refid="maven.project" />
		</artifact:dependencies>
		<copy todir="${lib.dir}">
			<fileset refid="maven.fileset" />
			<mapper type="flatten" />
		</copy>
		<echo message="*****初始化,下载maven库结束****" />
	</target>

12、ant编译找不到符号错误
当运行javac命令对项目编译时,肯定需要依赖项目的jar包,此外还要引用一些jdk的jar包,配置<compilerarg value="-XDignore.symbol.file" />同时引用class.path

		<javac srcdir="${module.name}/${src.dir}" destdir="${dest.dir}" includeantruntime="false" debug="true" encoding="UTF-8" classpathref="fas-classpath">
			<compilerarg value="-XDignore.symbol.file" />
			<compilerarg value="-Xlint:unchecked" />
			<compilerarg value="-Xlint:deprecation" />
			<classpath refid="class.path" />
		</javac>
		<path id="class.path">
			<fileset dir="${lib.dir}" includes="*.jar" />
		</path>

13、 deps.fileset.compile doesn’t denote a fileset
build.xml中复制路径错误错误,应该是filesetid

14、maven项目 加入json-lib-2.2.3-jdk15.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
json-lib是需要区分jdk版本的,pom.xml中的配置应加上标签classifier指定jdk版本,如用jdk15,就正常了。

<dependency>
	<groupId>net.sf.json-lib</groupId>
	<artifactId>json-lib</artifactId>
	<classifier>jdk15</classifier>
	<version>2.2.3</version>
</dependency>

15、System.out.println(Util.class.getClassLoader().getResource("/").getPath());
报空指针异常
**
resources目录下存放的资源文件经过编译后直接放到了项目根目录下了,正确获取方式:

Properties prop = new properties();
prop.load(this.getClass().getResourceAsStream("/test.properties"));

16、error: package org.eclipse.jdt.internal.compiler.ast does not exist
\workspace\fas2\src\oms\java\oms\com\hgc\oms\inventory_system\util\MyHtmlUtil.java:[9,44] error: package org.eclipse.jdt.internal.compiler.ast does not exist

pom.xml导入:

		<dependency>
			<groupId>org.eclipse.jdt.core.compiler</groupId>
			<artifactId>ecj</artifactId>
			<version>3.5.1</version>
		</dependency>

17、Message icon - Error javax.xml.parsers.DocumentBuilderFactory: Provider
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not a subtype

正常的情况下,会优先使用你的配置类。你可以在 systemProperty中配置具体使用哪个类。
如果没有配置,会使用 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 的实现类,是jdk8中自带的实现类。
默认的 fallback类为:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
通过点击DocumentBuilderFactory类查看,发现调用的是rt.jar里的类,包为javax.xml.parsers,
这里需要下载xerces.jar,其中包下的javax.xml.parsers.DocumentBuilderFactory正是需要的类
导入:

		<dependency>
			<groupId>xerces</groupId>
			<artifactId>xerces</artifactId>
			<version>1.4.4</version>
		</dependency>

然后在maven-war-plugin插件中排除:

	<configuration>
			<packagingExcludes>
				WEB-INF/lib/xml-apis-1.3.04.jar,
				WEB-INF/lib/xercesImpl-2.8.1.jar
			<packagingExcludes>
	</configuration>

18、web.xml is missing and is set to true
配置

<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-war-plugin</artifactId>
		<version>2.3</version>
		<configuration>
			<failOnMissingWebXml>false</failOnMissingWebXml>
		</configuration>
</plugin>

19、java.lang.ClassNotFoundException: javax.ws.rs.client.RxInvokerProvider
低版本没有这个类,升级版本为javax.ws.rs-api-2.1.1.jar

20、java.lang.IllegalStateException: InjectionManagerFactory not found.
具体原因是缺少jar包,解决办法是在maven配置文件pom.xml中加入依赖,或者直接到官网下载对应jar包:

<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.27</version>
</dependency>

21、ValidationAutoDiscoverable cannot be cast to org.glassfish.jersey.internal.spi.AutoDiscoverable
导入

<dependency>
	<groupId>org.glassfish.jersey.ext</groupId>
	<artifactId>jersey-bean-validation</artifactId>
	<version>2.26</version>
</dependency>

22、Message icon - Error org.glassfish.jersey.jsonp.internal.JsonProcessingAutoDiscoverable cannot be cast to org.glassfish.jersey.internal.spi.AutoDiscoverable
导入

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.27</version>
    <scope>provided</scope>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.media</groupId>
	<artifactId>jersey-media-json-processing</artifactId>
	<version>2.26</version>
</dependency>

23、invalid LOC header (bad signature)
重新删除jar再下载

24、Neither nor can be specified
when is turned on in weblogic.xml

<container-descriptor>
     <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor> 

上面配置的含义:优先使用Web应用里加载的类,即就是优先加载web-inf下lib中的jar包。在weblogic部署过程中,发现jersey包总是找不到,需要导入很多jar才行。这里可以直接在weblogic.xml配置prefer-application-packages,可以避免导入过多的jar包,消灭包找不到异常。
如下配置:

<container-descriptor>
	   <!-- <prefer-web-inf-classes>true</prefer-web-inf-classes>--> 
	   <index-directory-enabled>true</index-directory-enabled>
	   <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
	   
	   <prefer-application-packages>
            <package-name>com.sun.jersey.*</package-name>
            <package-name>com.sun.research.ws.wadl.*</package-name>
            <package-name>com.sun.ws.rs.ext.*</package-name>

            <package-name>org.codehaus.jackson.*</package-name>
            <package-name>org.codehaus.jettison.*</package-name>
            <!-- <package-name>javax.ws.rs.*</package-name> -->
            <package-name>org.objectweb.asm.*</package-name>
            <package-name>org.joda.*</package-name>
        </prefer-application-packages>
	   
	</container-descriptor>

25、java获取资源文件通过getClass().getClassLoader().getResource("/").getPath()
编译后的路径(即classes路径),Web项目写法是正确的,但是在Maven中会报空指针异常,
这里获取资源路径改为this.getClass().getResourceAsStream("/*.properties")

26、web.xml文件读取src/main/resourse格式:
动态web项目web.xml:

 <servlet>
    <servlet-name>TestManager</servlet-name>
    <servlet-class>test.TestManager</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/test.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

maven项目web.xml:

<servlet>
    <servlet-name>TestManager</servlet-name>
    <servlet-class>test.TestManager</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>classpath:test.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

27、maven build The scm url cannot be null
在pom.xml配置

<scm>
		<connection>scm:svn:http://code.taobao.org/svn/demo_</connection>
		<developerConnection>scm:svn:http://code.taobao.org/svn/demo_</developerConnection>
		<tag>HEAD</tag>
		<url>http://code.taobao.org/svn/demo_</url>
</scm>
<build>
.
.
.
</build>

28、weblogic启动报error in opening zip file
从打包好的war文件打开报错的jar会发现打不开,打开其他jar则正常,替换有问题的jar文件为可以打开的jar即可
还有可能是lib下面没有这个包,然后打成war包时是根据pom来打得,就自己创建了一个无法识别的jar文件,所以部署就打不开。这里我的原因是把maven-war-plugin的filtering设置成了true,设置为false后jar包打开正常!

5、最后

升级过程中遇到了很多问题,百度了很多文章但是始终不太有借鉴价值。自己在升级的过程中总结了很多经验,希望自己这篇博客可以给正纠结和迷茫的人一些方向,同时也给自己敲一下警钟!

【异常】Maven提示异常XmlPullParserException: Unrecognised tag: ‘exclusion‘ (position: START_TAG seen Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Unrecognised tag: 'exclusion' (position: START_TAG seen ...\n ... @180:24) 阅读详情

相关推荐

Apache Ant 1.10与Maven 3.5官方版完整构建工具套装下载

,它是构建脚本的起点。

weixin_33582089的博客 1052

Unrecognised tag: ‘repositories‘ (position: START_TAG seen ...</profile> -->\r\n\r\n\t\t<repositorie

[WARNING] [WARNING] Some problems were encountered while building the effective settings [WARNING] Unrecognised tag: 'repositories' (position: START_TAG seen ... -->\r\n\r\n\t\t... @207:17) @ D:\apache-maven-3.2.1\conf\settings.xm

qq 117791303 2289

3D Slicer中安装MedSAM插件

大家应该都读过这篇论文:《Segment Anything in Medical Images》这个插件便是该论文团队推出的在3D Slicer上使用的插件,可以分割医学图像的任何感兴趣区域。

m0_73719342的博客 2330

项目开发环境搭建手记(4.Maven私服Nexus安装及自动部署到Tomcat)

作者:fbysss QQ:溜酒酒吧酒吧吾散 blog:blog.youkuaiyun.com/fbysss 声明:本文由fbysss原创,转载请注明出处 一、.maven安装 下载maven:http://maven.apache.org/download.cgi tar zxvf apache-maven-3.2.5-bin.tar.gz mv apache-maven-3.2.5 /

fbysss的专栏 1万+

共享单车需求预测问题:建模篇

机器学习训练营——机器学习爱好者的自由交流空间(qq群号:696721295) 在上一篇里,我们使用可视化的方法分析了“共享单车”的数据集,理解了特征(变量)之间的关系。我们将在本篇建立几个模型预测单车的需求量,并比较它们的预测效果。 随机森林填充法 首先,导入必需的库、训练集和检验集。 import pylab import calendar import numpy as np impor...

wong2016的博客 1万+

elementui中el-select和el-tree实现下拉树形多选功能

elementui中el-select和el-tree实现下拉树形多选功能

weixin_49203377的博客 6557

纯JAVA的ant项目转maven_将常规项目转换为Maven项目

本节讲述了在 IntelliJ IDEA 中如何将常规项目转换为 Maven 项目。您可以打开一个现有的非 Maven 项目,并通过 IntelliJ IDEA UI 添加 Maven 支持。打开一个现有项目,例如,一个 Java 项目。在项目工具窗口中,右键单击您的项目并选择“添加框架(AddFramework)”支持。在打开的对话框中,从左侧的选项中选择 Maven,然后单击“确定”。Int...

weixin_39548438的博客 2088

大学生智能车竞赛初次尝试经验分享--1(硬件绘制电路,pcb部分)

本人机械电子专业大二暑假参加全国大学生智能车竞赛,之前参加过一些其他类型的比赛有一点基础,由于之前疫情影响所以做智能车比赛断代了,没有学长带也没有思路,从一开始的一头雾水逐渐摸索出我感觉比较实用的经验。 一.首先是硬件的准备工作: 1.硬件部分与要自己设计需要的电路制成pcb。推荐使用Altium Designer20,AD比较常用所以有多实用的教学视频,另外需要自己了解布线规则,包括信号线,电源线常用的宽度 一些电源电路,驱动电路建议用multisim仿真,没有问题再进行制版 单片机有关的需要仿真

weixin_52679034的博客 9834

gradle 入门

来源 作用 如何使用

魔道晓树的专栏 627

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5546

《QGIS空间数据处理与高级制图》【目录】

《QGIS空间数据处理与高级制图》是一本面向GIS技术人员和学生的进阶手册,重点提升数据处理效率和专业制图标准化水平。全书涵盖空间数据预处理、矢量编辑、栅格处理、坐标系统应用和符号化设计等核心内容。书中详细介绍了批量数据转换、拓扑检查、遥感影像处理、自定义坐标系创建等实用技能,并提供了模型构建器和PyQGIS脚本实现自动化操作。通过大量实战案例和问题排查指南,帮助读者从基础使用进阶到专业应用,适合测绘、规划、环保等行业的GIS从业者参考使用。

LuckyHanMo的博客 374

关于MAVEN和ANT的讨论(整理)

前几天因为可能要用到MAVEN,所以在优快云论坛发表了一篇帖子 各抒己见:MAVEN比ANT好在哪里 来征求大家的意见,现将讨论内容整理如下: 原帖内容: 以前一直用Ant,最近准备上Sonar这个开源的代码质量管理平台,跟MAVEN关系很大,  准备看看,第一印象是:  哇!  好复杂!  同时用过两种工具的同仁们,希望不吝赐教,讨论一下:  1、MA

live_for_you的专栏 748

【100%通过率】华为OD机试真题 Java&Go 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

maven项目 ant_将大型项目从Ant迁移到Maven

maven项目 ant 事实是我们处在艰难时期。 我们花了将近三个月的时间将构建机制从Ant迁移到Maven 。 如果您打算在大型项目中进行同样的安排,那是您必须安排的最短时间。 我们仍在努力解决这种迁移带来的一些附带影响,但幸运的是,它们并不是那么关键。 上下文 仅需要一点上下文,我们就有一个由25个集成应用程序组成的完整Java EE 6系统,每个应用程序平均具有3个模块(EJB,WE...

最佳 Java 编程 614

【PX4学习笔记】3. PX4 固件烧写(1 探索过程)

飞控型号:cube orange【PX4官方用户指南中关于cube orange的描述】 飞控载板型号:Mini Carrier Board【迷你载板说明文档】 固件安装参考:The Cube User Manual V1.0

【人工智障 | 计算鸡视觉 | 机器孩】 7677

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

maven项目 ant_将旧项目从Ant迁移到Maven的4个简单步骤

maven项目 ant 一段时间以来,我们一直在考虑将构建从蚂蚁移植到Maven。 它发生在上个月,实际上比我们预期的要简单。 根据我的经验,这里简要介绍了我们遵循的步骤。 我们的应用程序是一个具有多个框架和技术的企业Web应用程序构建,并作为单个WAR部署。 1.创建Maven项目目录结构 如Maven用户指南中所述,创建以下目录结构。 我们已经在项目的新文件夹下完成了此操作。 2....

最佳 Java 编程 605

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ant maven 比较

前几天因为可能要用到MAVEN,所以在优快云论坛发表了一篇帖子 各抒己见:MAVEN比ANT好在哪里 来征求大家的意见,现将讨论内容整理如下:xyz20003连发三篇,阐明了自己的看法:探讨一二,也就是说以前写的不管用咯,唉,好严格。 我还是觉得,如果上层推不动,maven2这种纯构建的东东就用不起来。你说让一个刚毕业的,连软件开

java journey 1031

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

取代 Ant:使用 Maven 管理 Wowza 插件开发

Wowza ide 对于 Wowza 插件的开发不支持 maven,开发调试起来虽然没啥问题,但随着各种功能的不断添加,第三方包会越来越多,各种 jar 包管理起来相当混乱,给开发和维护升级带来很多不便。事实上 Maven 也可以集成进 Wowza 的开发进来,完全可以替代掉 Wowza 官方 IDE 提供的 ant。本文介绍如何使用 Maven 开发一个 Wowza 插件的过程。实践证明,Maven 开发 Wowza 插件,具有 ant 所具备的所有优点(比如对开发中的插件进行断点调试、项目自动部署),不

Defonds 的专栏 4468

Java中的Ant与Maven比较整理

Ant和Maven都是基于Java的构建(build)工具,Ant是最早出来的构建工具,理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。 Ant特点 没有一个约定的目录结构 必须明确让ant做什么,什么时候做,然后编译,打包 没有生命周期,必须定义目标及其实现的任务序列 没有集成依赖管理。 功能: ...

青木宫的博客 530

解决Maven/Ant中OutOfMemory错误

根据实际情况,适当增加堆内存可以减少OutOfMemory错误的发生。根据具体情况,你可以选择以上方法中的一个或多个来解决Maven/Ant中的OutOfMemory错误。注意,JVM8及之后的版本使用了Metaspace替代了PermGen。参数来调整永久代(PermGen)的大小。在运行Maven或Ant命令时,可以使用。参数来增加Java虚拟机的堆内存大小。在Maven中,可以通过在命令中添加。这会使用4个线程进行编译,提高编译效率。在JVM8之前的版本中,可以使用。参数来启用并行编译。

高性价比服务器就选:蓝易云 765

Renovate 的 Apache Ant Manager 解析:从 build.xml 提取并更新 Maven 依赖

本文围绕 Renovate 中 Apache Ant 包管理器(manager)的实现展开,讲解它如何从 `build.xml` 中解析 `maven-resolver-ant-tasks` / `maven-ant-tasks` 声明的依赖、如何解析 Ant 属性引用与 `<import>` 导入、以及如何发现 Maven 仓库地址。读完本文,你将掌握 Renovate 对 Ant 项目的依赖提

gitblog_00059的博客 107

【JAVA环境】Maven安装超详细步骤(保姆级教程)以及ANT讲解-

安装总结: 下载我的优快云里的那个配置文件修改好的。 然后,按着B站视频配置就可以了。 B站地址: 4分50秒处 [https://www.bilibili.com/video/BV19uE3zDEiL/]

dearmite的专栏 615

Apache Ant和Apache Maven的区别

———摘自《maven权威指南》 Apache Ant 1、Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。 2、Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。 Apache Maven 1、Maven 拥有约定,因为

一名系统架构师的征途 5501

升级ant配置文件(关于copy maven依赖jar),如何优雅的自动copy scope为system的jar

升级ant配置文件(关于copy maven依赖jar),如何优雅的自动copy scope为system的jar   (注:这个文档需要 ant和maven的基础知识)   (不想看废话的,直接跳最后面看结论)   ant发布的时候copy lib,公司架构师以前是这样来的      &lt;target name="copyLib"&gt;       &l...

venusdrogon的专栏 471

OWASP Dependency-Check 升级避坑指南:4 步走通 CLI 到 Maven 插件的完整迁移路径

OWASP Dependency-Check 是一款软件成分分析工具,专门检测你项目依赖里已被公开披露的安全漏洞(CVE)。当它发布强制升级版本、或 H2 数据库 schema 迁移卡住时,多数人的第一步就错了。这篇面向新手的文章,按"先判紧急度、再定路线、后落库、再验收"的顺序,把 Dependency-Check 升级会遇到的每个岔路口都讲清楚。 ## 第一步:对照版本记录,判断你现在处于哪

gitblog_00196的博客 660
上一篇: [WARNING] 'dependencies.dependency.systemPath' for...
下一篇: 百度网盘不启动客户端下载大文件
CZ__
博客等级 码龄9年 97粉丝 114原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值