ラベル devOps の投稿を表示しています。 すべての投稿を表示
ラベル devOps の投稿を表示しています。 すべての投稿を表示

2014/05/19

Vagrant 試し

★vagrant box add chef/centos-6.5 (url)
==>This will download the box named "chef/centos-6.5" from Vagrant Cloud,
a place where you can find and host boxes.
 While it is easiest to download boxes from Vagrant Cloud you can also add boxes from a local file, custom URL, etc.


★vagrant proxy
WIndows7 のシステム環境変数 http_proxy に proxy_host:proxy_port のフォーマットで設定すればよいようです。
https_proxy   proxy_host:proxy_port

vagrant init
vagrant up

★仮想マシンに接続する
vagrant ssh
vagrant status
vagrant halt
vagrant destory {name}


★ターミナルで接続する方法
例えばTeraTermとかで接続したいとき。
vagrant initした際に作成されたVagrantfileのconfig.vm.networkを下記のように設定。
(コメントアウトされてるのでそれを有効にすればよい。)

config.vm.network :private_network, ip: "192.168.33.10"

これでターミナルから「192.168.33.10」でsshできる。
ユーザとパスワードは「vagrant」。rootになるにはノンパスで「sudo -s」。
これは「ホストオンリーネットワーク」といって、ホストOSからしかゲストOSへアクセスできない。
VirtualBoxでいうと「ホストオンリーアダプター」を設定していることになる。
※「:hostonly」って書き方もあるが、古いらしい。
他にも以下のようなネットーワーク設定が可能。

chef install

chef-soloでstandalone型の物を試す:

・yum install ruby ruby-devel rubygems make gcc
・sudo curl -L https://www.opscode.com/chef/install.sh | sudo bash

mkdir -p chef-repo/cookbooks
cd chef-repo/cookbooks
knife cookbook create setup-user -o .
-o .==>output を今のところにする

2014/05/13

CentOS ant インストール

★バイナリ形式のtar.gzファイルをダウンロードし
★環境変数を設定する
touch /etc/profile.d/ant.sh
=->export ANT_HOME=".."
  export PATH="$PATH:ANT_HOME/bin"
★拡張jarを全て ANT_HOME/libの下に入れる

yum方式やめる方がいい

2014/05/07

ant

★ant
ant -buildfile test.xml
ant -buildfile test.xml dist
ant -buildfile test.xml -Dbuild=build/classes dist
-->buildFileをtest.xmlを使う。タスクをdistにする。
 build属性を「build/classes」にする
 
★java言語を使って、新たな機能を追加できる。

★build.xml、eclipseで書く方が楽。

★platform間の溝を埋めるために作った。
=ー>実行できない。。

これだけ、後は使う時調べる。

maven 入門

mvn archetype:generate
->generate project in Interactive mode
・アーキタイプを指定する
=>
デフォルトが203(org.apache.maven.archetypes:maven-archetype-quickstart)になっているので、それを選んでみる
・versionを指定する
・groupIdを指定する
==>これは、何をやっている?
シンプルなクラスつくてくれた。。。。
ーー>test1を作る!

★Mavenでは「リポジトリー」という場所でアーカイブ(jarファイルやソースファイル等)を保管しておき、Mavenで管理された各アプリケーションではそれを参照する。
リポジトリーには「リモートリポジトリー」と「ローカルリポジトリー」がある。
リモートリポジトリーはインターネット上で公開されているリポジトリーで、ローカルリポジトリーは自分のマシン上に(自動的に)構築されたリポジトリー。
Mavenではpom.xmlにアプリケーションが依存(使用)するライブラリーを記述する。
Mavenのコマンドを実行すると、その依存関係に従ってリモートリポジトリーからライブラリー(アーカイブ)をダウンロードしてローカルリポジトリーに格納する。
そして、各アプリケーションはローカルリポジトリー内のファイルを参照して処理を行う。
(例えばローカルリポジトリー内のjarファイルをクラスパスに追加してアプリケーションをコンパイルしたり実行したりする)
==ー>リポジトリー?

★Mavenでは、mvnコマンドのオプションとして「ゴール」を指定して実行する
mvn ゴール 例:clean/test/install:install-file
「プラグイン名:」でプラグイン特有のゴールを指定できる。
http://maven.apache.org/plugins/index.html
いろいろできようね。。
全体像をつかまない。。。。


★プロジェクトをビルドする
cd test1
mvn package
==>bulid,compile,run testClass,
テスト結果が作成される、jarファイルも作成された!!
いろいろやってくれありがとうございます!
※packageはgoalではなく、phaseである。
プロジェクトのlifeCycleでいろんなphaseがある。package前のphaseは全て実行される。
(package?jarファイルを作成すること?)
validate
compile
test
package
intergration-test
verfify
install
deploy
clean
site
------
phaseの下goalがあるの感じ。ディフォルトのgoalもある!


★pom.xml
・下記の座標でプロジェクトを管理する
groupId-->URL/Package
artifactId-->そのグループ中のID
version-->
name-->必須ではない
プロジェクト管理なので、実際のCodeと関係がない。
pomで管理対象を設定するので、pomを修正すれば良い。

★eclipseに導入。。。

mvn eclipse:eclipse
==>windowsでuserのディレクトリの下で、権限の問題でいろいろうまくいかない!!
Cではなく、別のところにしよう。。

★echo %M2_HOME%
=>windowsで

★====>必要な時、plugInを検索して使う。

Why maven



★Why maven?
除了编写源代码,我们每天有相当一部分时间花在了编译、运行单元测试、生成文档、打包和部署等烦琐且不起眼的工作上,这就是构建
我们一直在不停地寻找避免重复的方法。设计的重复、编码的重复、文档的重复,
当然还有构建的重复。Maven最大化地消除了构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件,我们不再需要定义过程,甚至不需要再去实现这些过程中的一些任务。
最简单的例子是测试,我们没必要告诉Maven去测试,更不需要告诉Maven如何运行测试,只需要遵循Maven的约定编写好测试用例,当我们运行构建的时候,这些测试便会自动运行

在这个开源的年代里,几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。手工解决这些问题是十分枯燥的,幸运的是Maven提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库(如jar文件)。Maven给这个类库世界引入了经纬,让它们变得有秩序,于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题

只要定位了坐标,Maven就能够帮我们自动下载,省去了手工劳动。
★これみたいな物!
使用脚本建立高度自定义的构建系统就像买组装PC,耗时费力,结果也不一定很好。当然,你可以享受从无到有的乐趣,但恐怕实际项目中无法给你那么多时间。使用Maven就像购买品牌PC,省时省力,并能得到成熟的构建系统,还能得到来自于Maven社区的大量支持。

★MAVEN VS IDE
IDE能大大提高开发效率。当前主流的IDE如Eclipse和NetBeans等都提供了强大的文本编辑、调试甚至重构功能。虽然使用简单的文本编辑器和命令行也能完成绝大部分开发工作,但很少有人愿意那样做。然而,IDE是有其天生缺陷的: 
 IDE依赖大量的手工操作。编译、测试、代码生成等工作都是相互独立的,很难一键
完成所有工作。手工劳动往往意味着低效,意味着容易出错。   
很难在项目中统一所有的IDE配置,每个人都有自己的喜好。也正是由于这个原因,一个在机器A上可以成功运行的任务,到了机器B的IDE中可能就会失败。 
我们应该合理利用IDE,而不是过多地依赖它。对于构建这样的任务,在IDE中一次次地点击鼠标是愚蠢的行为。Maven是这方面的专家,而且主流IDE都集成了Maven


★MAVEN VS ANT
和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。 
Ant是没有依赖管理的,所以很长一段时间Ant用户都不得不手工管理依赖,这是一个令人头疼的问题。幸运的是,Ant用户现在可以借助Ivy管理依赖。而对于Maven用户来说,依赖管理是理所当然的,Maven不仅内置了依赖管理,更有一个可能拥有全世界最多Java开源软件包的中央仓库,Maven用户无须进行任何配置就可以直接享用

Maven真比自己的“规范化Ant”强大?其实他不知道自己只是在重新发明轮子,Maven已经有一大把现成的插件,全世界都在用,你自己不用写任何代码! 为什么没有人说“我自己写的代码最灵活,所以我不用Spring,我自己实现IoC;我不用Hibernate,我自己封装JDBC”?

2013/09/16

ant copy exclude folder ,if not exists

<copy todir="${remployDeploy}">
            <fileset dir="${deploy}">
                <include name="**" />
                <exclude name="logs/**" />
                <exclude name="db/**" />
            </fileset>
        </copy>


<condition property="hasToCreateDb">
            <not>
                <available file="${remployDeploy}/db" type="dir" />
            </not>
        </condition>

        <antcall target="copyDbDir" />    
==>

<target name="copyDbDir" unless="${hasToCreateDb}">
        <copy todir="${remployDeploy}/db">
            <fileset dir="db" />
        </copy>
   </target>



2013/09/12

ant jar

<jar basedir="${bin}" jarfile="${deploy}/HelpYou.jar">
            <manifest>
                <attribute name="Main-Class" value="com.syuu.automic.MainWindow" />
            </manifest>
  </jar>
jarファイルをまとめて、一つにする
<zipgroupfileset dir="libs" includes="**/*.jar" />