您现在的位置是:主页 > news > 网站做发/优化设计官网

网站做发/优化设计官网

admin2025/5/19 7:09:38news

简介网站做发,优化设计官网,brophp框架如何做网站,网站建设行业网站转自:http://www.tuicool.com/articles/yY7BRjr 用Java写了一个命令行的小程序,使用的Intellij IDE是IDEA13原来一直使用Ant来打包编译,为了学习一下maven打包,特此从Ant打包转转换为Maven打包发布 源码的目录结构如下: conf 目录…

网站做发,优化设计官网,brophp框架如何做网站,网站建设行业网站转自:http://www.tuicool.com/articles/yY7BRjr 用Java写了一个命令行的小程序,使用的Intellij IDE是IDEA13原来一直使用Ant来打包编译,为了学习一下maven打包,特此从Ant打包转转换为Maven打包发布 源码的目录结构如下: conf 目录…

转自:http://www.tuicool.com/articles/yY7BRjr


用Java写了一个命令行的小程序,使用的Intellij IDE是IDEA13原来一直使用Ant来打包编译,为了学习一下maven打包,特此从Ant打包转转换为Maven打包发布

源码的目录结构如下:

conf 目录是 程序的配置文件所在的目录
lib  程序的依赖库文件
scripts 启动程序的叫,start.bat 是在window上启动的脚本,start.sh是在Linux启动的脚本
src 是源代码目录
build.xml 是Ant打包的脚本

build.xml内容如下:

<project default="jar" name="easyxms">
  <!-- 工程目录结构 
  project 
    |-conf
    |-lib
    |-logs
    |-scripts
    |-src
    |-build.xml
  --> 
  <property name="lib.dir" value="lib"/> 
  <property name="src.dir" value="src"/> 
  <property name="classes.dir" value="bin"/> 
  <property name="output.dir" value="easyxms"/>
  <property name="scripts.dir" value="scripts"/>
  <property name="jarname" value="easyxms.jar"/>
  <property name="mainclass" value="org.easyxms.EasyXMS"/>
  <property name="orginal.conf.dir" value="conf"/>
  <property name="orginal.logs.dir" value="logs"/>
  <property name="logs.dir" location="${output.dir}/${orginal.logs.dir}"/>
  <property name="conf.dir" location="${output.dir}/${orginal.conf.dir}"/>
  <!-- 第三方jar包的路径 --> 
  <path id="lib-classpath"> 
    <fileset dir="${lib.dir}"> 
      <include name="**/*.jar"/> 
    </fileset> 
  </path> 
  <!-- 1. 初始化工作,如创建目录等 --> 
  <target name="init"> 
    <mkdir dir="${classes.dir}"/> 
    <mkdir dir="${output.dir}"/>
    <mkdir dir="${logs.dir}"/>
    <mkdir dir="${conf.dir}"/>
  </target>
  <!-- 2. 编译 --> 
  <target name="compile" depends="init"> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}"> 
      <compilerarg line="-encoding UTF-8"/> 
      <classpath refid="lib-classpath"/> 
    </javac>
    <copy todir="${conf.dir}">
      <fileset dir="${orginal.conf.dir}" excludes=".svn" />
    </copy>
    <copy todir="${output.dir}">
      <fileset dir="${scripts.dir}" excludes=".svn" />
    </copy>
    <copy file="${src.dir}/log4j.properties" todir="${classes.dir}"/>
    <copy file="${src.dir}/commons-logging.properties" todir="${classes.dir}"/>
  </target> 
  <!-- 3. 打包jar文件 --> 
  <target name="jar" depends="compile"> 
    <copy todir="${output.dir}/lib"> 
      <fileset dir="${lib.dir}"/> 
    </copy> 
    <!--Create a property containing all .jar files, 
    prefix lib/, and seperated with a space--> 
    <pathconvert property="mf.classpath" pathsep=" "> 
      <mapper> 
        <chainedmapper> 
          <!-- jar包文件只留文件名,去掉目录信息 --> 
          <flattenmapper/> 
          <!-- add lib/ prefix --> 
          <globmapper from="*" to="lib/*"/> 
        </chainedmapper> 
      </mapper> 
      <path refid="lib-classpath"/> 
     </pathconvert> 
    <!-- jar文件的输出路径 --> 
    <jar destfile="${output.dir}/${jarname}" basedir="${classes.dir}"> 
      <manifest> 
        <attribute name="Main-class" value="${mainclass}"/> 
        <attribute name="Class-Path" value="${mf.classpath}"/> 
      </manifest> 
    </jar> 
  </target> 
</project> 

打包之后的结果:

二、使用Maven来打包发布

源码结构如下:

因为我没有测试的代码,就不需要 src/test目录

src/main 下的所有目录作用:

assemble/release.xml 这个是maven-assembly-plugin 这个插件使用的描述符文件,用来自定义打包发布(自定义发布包的目录结果)
conf 程序的配置文件目录
db   程序生产的数据库文件目录,这里面的.gitignore文件,是为了让git追踪该目录的,git默认情况是不追踪空目录的,这个目录是程序运行后会在里面创建数据库文件,所以需要该目录
example 添加Ip时的示例excel文件
java    源代码目录
logs    程序生成的日志文件目录,跟db目录类似,这个是程序运行产生的日志
resources 程序资源目录,比如log4j的配置文件log4j.properties,这个目录下的文件打成jar包的时候,会发到jar包的根目录下面,打包的过程中会放到 target/classes目录下
scripts   启动程序的脚本文件
pom.xml   Maven定义项目依赖的文件

这其中pom.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>org.easyxms</groupId>
  <artifactId>easyxms</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
  <!-- 定制项目信息 -->
  <name>easyxms</name>
  <url>http://www.easyxms.org</url>
  <licenses>
    <license>
      <name>Apache 2</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>
  <organization>
    <name>easyxms</name>
    <url>http://www.easyxms.org</url>
  </organization>
  <developers>
    <developer>
      <id>L</id>
      <name>LEO</name>
      <email>chanyipiaomiao@163.com</email>
      <url>http://www.easyxms.org</url>
      <organization>easyxms</organization>
      <organizationUrl>http://www.easyxms.org</organizationUrl>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>+8</timezone>
    </developer>
  </developers>
  <!-- 定义依赖库文件 -->
  <dependencies>
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.7.2</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.9</version>
    </dependency>
    <dependency>
      <groupId>jexcelapi</groupId>
      <artifactId>jxl</artifactId>
      <version>2.4.2</version>
    </dependency>
    <dependency>
      <groupId>com.jcraft</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.51</version>
    </dependency>
    <dependency>
      <groupId>it.sauronsoftware.base64</groupId>
      <artifactId>javabase64</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.2</version>
    </dependency>
  </dependencies>
  <!-- 编译打包 -->
  <build>
    <!-- 控制资源文件的拷贝 -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <targetPath>${project.build.outputDirectory}</targetPath>
      </resource>
    </resources>
    <plugins>
      <!-- 解决资源文件的编码问题 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!-- 设置源文件编码方式 -->
      <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>
        </configuration>
      </plugin>
      <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>org.easyxms.EasyXMS</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <!-- 自定义发布版本包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4.1</version>
        <executions>
          <execution>
            <id>create-release-zip</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>src/main/assemble/release.xml</descriptor>
          </descriptors>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

release.xml 文件内入如下:

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  <id>release package</id>
  <formats>
    <format>zip</format>
  </formats>
  <!-- 打zip包时,包含一层打包目录 -->
  <includeBaseDirectory>true</includeBaseDirectory>
  <!-- 包含程序运行自身所需的目录 -->
  <fileSets>
    <fileSet>
      <directory>src/main/conf</directory>
      <outputDirectory>/conf</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>src/main/logs</directory>
      <outputDirectory>/logs</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>src/main/example</directory>
      <outputDirectory>/example</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>src/main/db</directory>
      <outputDirectory>/db</outputDirectory>
    </fileSet>
  </fileSets>
  <!-- 把编译好的jar文件包含到发布的目录中去并设置脚本文件的权限-->
  <files>
    <file>
      <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
      <destName>easyxms.jar</destName>
      <outputDirectory>/</outputDirectory>
    </file>
    <file>
      <source>src/main/scripts/start.sh</source>
      <!-- 设置start.sh文件的换行符为unix换行符\n -->
      <lineEnding>unix</lineEnding>
      <outputDirectory>/</outputDirectory>
      <fileMode>0740</fileMode>
    </file>
    <file>
      <source>src/main/scripts/start.bat</source>
      <!-- 设置start.bat文件的换行符为dos换行符\r\n -->
      <lineEnding>dos</lineEnding>
      <outputDirectory>/</outputDirectory>
    </file>
  </files>
  <!-- 复制所有的依赖jar到发布的目录的lib目录下 -->
  <dependencySets>
    <dependencySet>
      <scope>runtime</scope>
      <outputDirectory>lib</outputDirectory>
      <!--不要把主程序本身包含进lib目录,如果不加这个主程序的jar包也会包含到lib目录下-->
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>
  </dependencySets>
</assembly>

命令行进入到 F:\workspace\Java\EasyXMS 项目的目录

然后执行 mvn clean package,执行过程如下:

再到target目录下,就可以看到

easyxms-1.0.0.jar 这个项目主程序easyxms-1.0.0.zip 是发布给别人使用的包,结构如下:

里面包含了项目的主程序,自此项目就从Ant打包转换为了Maven来打包发布了。