Maven初识

Maven 是一个项目管理工具,它是基于POM的(project object model)

概念

  • POM (project object model), pom.xml 是构建的配置文件
  • Goal 目标,代表一个特定的任务(在构建过程中被执行)。Goal可以与一个或多个Phase绑定(可以不绑定)。
  • Phase 阶段,不同的阶段按照一定次序排列组成了一个Lifecycle。以下是我们经常遇到的Phase 列表,但不是一个完整的Phase列表。
    • validate
    • compile
    • test
    • package
    • itergration-test
    • verify
    • install
    • deploy
    • clean
    • site
  • Plugin 插件,插件提供了多个Goal。Maven为我们提供了丰富的插件(插件列表)。这些插件提供了许多Goal并部分绑定到不同的Phase上,从而组成了功能丰富的Lifecycle。
  • Lifecycle 生命周期,每个Lifecycle由不同的Phase列表构成。Maven提供了三个内置的生命周期
    • clean 清理项目
      • pre-clean
      • clean
      • post-clean
    • site 生成项目站点文档
      • pre-site
      • site
      • post-site
      • site-deploy
    • default 项目部署、构建
      • validate
      • initialize
      • generate-sources
      • process-sources
      • generate-resources
      • process-resources
      • compile
      • process-classes
      • generate-test-sources
      • process-test-sources
      • test-compile
      • process-test-compile
      • test
      • prepare-package
      • package
      • pre-integration-test
      • integration-test
      • post-integration-test
      • verify
      • intall
      • deploy

Phase、Goal 组成关系:

插件列表(部分):

一级:插件

二级:插件提供的Goal

三级:Goal默认绑定的Phase

  • clean
    • clean:clean
  • compiler
    • compiler:compile
      • compile
    • compiler:testCompile
      • test-compile
  • deploy
    • deploy:deploy
      • deploy
    • deploy:deploy-file
  • failsafe
    • failsafe:integration-test
      • integration-test
    • failsafe:verify
      • verify
  • install
    • install:install
      • install
    • install:install-file
    • install:help
  • resources
    • resources:resources
      • process-resources
    • resources:testResources
      • process-test-resources
    • resources:copy-resources
  • site
    • site:site
      • test
    • site:deploy
    • site:run
    • site:stage
    • site:stage-deploy
    • site:attach-descriptor
      • package
    • site:jar
      • package
    • site:effective-site
  • surefire
    • surefire:test
      • test
  • verifier
    • verifier:verify
      • integration-test
  • ear
    • ear:ear
      • package
    • ear:generate-application-xml
      • generate-resources
  • ejb
    • ejb:ejb
      • package
  • jar
    • jar:jar
      • package
    • jar:test-jar
      • package
  • rar
    • rar:rar
      • package
  • war
    • war:war
      • package
    • war:exploded
      • package
    • war:inplace
  • source
    • source:aggregate
      • package
    • source:jar
      • package
    • source:test-jar
      • package
    • source:jar-no-fork
      • package
    • source:test-jar-no-fork
      • package
  • dependency
    • dependency:analyze
    • dependency:analyze-dep-mgt
    • dependency:analyze-only
      • verify
    • dependency:analyze-report
    • dependency:analyze-duplicate
    • dependency:build-classpath
      • generate-sources
    • dependency:copy
      • process-sources
    • dependency:copy-dependencies
      • process-sources
    • dependency:display-ancestors
      • validate
    • dependency:get
    • dependency:go-offline
    • dependency:list
    • dependency:list-repositories
    • dependency:properties
      • initialize
    • dependency:purge-local-repos
    • dependency:resolve
      • generate-sources
    • dependency:resolve-plugins
      • generate-sources
    • dependency:sources
      • generate-sources
    • dependency:tree
    • dependency:unpack
      • process-sources
    • dependency:unpack-dependencies
      • process-sources

CLI

cli 格式: mvn [options] [<goal(s)>] [<phase(s)>]

可以通过mvn -h 查询options

例:

mvn clean deploy site-deploy

pom.xml 的配置

maven 提供了一个默认的pom配置,如果我们自己的pom中没有提供相应的配置则采用默认的pom配置。默认配置详情

pom.xml 配置说明:

<project>
  	<modelVersion>4.0.0</modelVersion>
  	<name>Maven Default Project</name>
  	<version>${project.release.version}</version>

	<!-- 指定父项目,pom的继承-->
	  <parent>...</parent>

	  <!-- 指定子模块,pom的聚合-->
	  <modules></modules>
	<!-- 变量,可通过${property} 方式引用 -->
   	<properties>
    	<version>0.0.13</version>
		<project.release.version>${version}-SNAPSHOT</project.release.version>
   	</properties>

	<!-- 可通过 mvn -P <[profile id]> 指定用哪个profile-->
	<profiles>
	    <profile>
	        <id>product</id>
	        <properties>
	        	<project.release.version>${version}</project.release.version>
	        </properties>
		<dependencies></dependencies>
	        <build></build>
		...
	    </profile>
	</profiles>

  	<!-- 仓库配置,Maven 自带Id为central的仓库,如果该地方重复指定id为central的配置则覆盖默认central-->
  	<repositories>
  	  <repository>
  	    <id>central</id>
  	    <name>Maven Repository Switchboard</name>
  	    <layout>default</layout>
  	    <url>http://repo1.maven.org/maven2</url>
  	    <snapshots>
  	      <enabled>false</enabled>
  	    </snapshots>
  	  </repository>
  	</repositories>
 
 	<pluginRepositories>
 	  <pluginRepository>
 	    <id>central</id>
 	    <name>Maven Plugin Repository</name>
 	    <url>http://repo1.maven.org/maven2</url>
 	    <layout>default</layout>
 	    <snapshots>
 	      <enabled>false</enabled>
 	    </snapshots>
 	    <releases>
 	      <updatePolicy>never</updatePolicy>
 	    </releases>
 	  </pluginRepository>
 	</pluginRepositories>
	
 	<build>
	 <!-- 以下为默认配置 -->
 	  <directory>${project.basedir}/target</directory>
 	  <outputDirectory>${project.build.directory}/classes</outputDirectory>
 	  <finalName>${project.artifactId}-${project.version}</finalName>
 	  <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
 	  <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
 	  <!-- TODO: MNG-3731 maven-plugin-tools-api < 2.4.4 expect this to be relative... -->
 	  <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
 	  <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
 	  <resources>
 	    <resource>
 	      <directory>${project.basedir}/src/main/resources</directory>
 	    </resource>
 	  </resources>
 	  <testResources>
 	    <testResource>
 	      <directory>${project.basedir}/src/test/resources</directory>
 	    </testResource>
 	  </testResources>
	  <reporting>
  	  	<outputDirectory>${project.build.directory}/site</outputDirectory>
  	  </reporting>
	   <!-- 结束-->

	   <!-- 声明插件,可在插件配置使用而无需指定插件版本号 -->
 	 <pluginManagement>
 	     <plugins>
 	       <plugin>
 	         <artifactId>maven-antrun-plugin</artifactId>
 	         <version>1.3</version>
 	       </plugin>       
 	     </plugins>
 	   </pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<!-- 每个插件的configuration下的元素不同-->
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		<plugins>
 	</build> 

</project>
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值