Maven 编译 打包注意事项

1. 父子项目同时编译问题: 编译时找不到父项目的pom.xml文件

报错信息: Non-resolvable parent POM for XXXXX

解决: 在子项目pom.xml的parent中, 加入父项目的相对路径relativePath

<parent>
      <artifactId>demo-server</artifactId>
      <groupId>net.abc.demo</groupId>
      <version>1.0.0</version>
      <relativePath>../pom.xml</relativePath>
</parent>

2. 多个模块打包的依赖问题

报错信息: class net.abc.demo.XXXXX .java:[24,9] cannot find symbol: class XXX

解决: 在被依赖的模块项目pom.xml中, 加入maven-compiler-plugin插件

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <fork>true</fork>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果依赖的是springboot模块, 则pom.xml为:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

git 常用命令

git切换远程分支: Cannot update paths and switch to branch at the same time

执行切换远程分支:

git checkout -b fork-1.1.1 origin/fork-1.1.1

报错:

fatal: Cannot update paths and switch to branch 'fork-1.1.1' at the same time.
Did you intend to checkout 'origin/fork-1.1.1' which can not be resolved as commit?

这是因为本地没有fetch远程origin的信息,所以先要执行

git remote -v
git fetch origin

确定origin is fetched, 然后执行

git checkout -b fork-1.1.1 origin/fork-1.1.1

Branch fork-1.1.1 set up to track remote branch fork-1.1.1 from origin.
Switched to a new branch 'fork-1.1.1'

这里就能成功,切换回master命令

git checkout master

git tag 创建/删除

git tag --list //查看tag
git tag tag名称 c809ddbf83939a8963 //在某个commit上打tag
git tag ... 
git push origin tag名称    //!!!本地tag推送到线上
git tag -d tag名称        //本地删除tag
git push origin :refs/tags/tag名称  //本地tag删除了,再执行该句,删除线上tag 
//清除本地tag缓存,重新拉取tag信息
git tag -l | xargs git tag -d
git fetch -t -p -f

git 回退

git reset --hard HEAD~1 

备注: 如果不小心回退了未提交的数据(哎。。。手残),试试这个命令吧:

git fsck --lost-found
//文件在.git/lost-found/other下,是一堆的ID,然后
find .git/objects -type f | xargs ls -lt | sed 60q
//60代表你想找回的最近的多少次add过的文件