blob: 334d3f8bbc8871fee722575ab7535c55efa3063f [file] [log] [blame]
<!doctype html>
<!--
Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<!-- begin SEO -->
<title>Setup Developing Environment - Apache ServiceComb</title>
<meta name="description" content="setup developing environment">
<meta name="author" content="">
<meta property="og:locale" content="en">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="Setup Developing Environment">
<link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/developers/setup-develop-environment/">
<meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/developers/setup-develop-environment/">
<meta property="og:description" content="setup developing environment">
<meta name="twitter:site" content="@ServiceComb">
<meta name="twitter:title" content="Setup Developing Environment">
<meta name="twitter:description" content="setup developing environment">
<meta name="twitter:url" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Person",
"name" : "Apache ServiceComb",
"url" : "https://github.com/pages/apache/incubator-servicecomb-website",
"sameAs" : null
}
</script>
<meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
<!-- end SEO -->
<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache ServiceComb Feed">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script src="/assets/vendor/prism/prism.js"></script>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<!-- For all browsers -->
<link rel="stylesheet" href="/assets/css/main.css?v=1">
<link rel="stylesheet" href="/assets/vendor/prism/prism.css?v=1">
<!--[if lte IE 9]>
<style>
/* old IE unsupported flexbox fixes */
.greedy-nav .site-title {
padding-right: 3em;
}
.greedy-nav button {
position: absolute;
top: 0;
right: 0;
height: 100%;
}
</style>
<![endif]-->
<meta http-equiv="cleartype" content="on">
<!-- start custom head snippets -->
<!-- insert favicons. use http://realfavicongenerator.net/ -->
<link href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
<script src="/assets/js/custom.js"></script>
<!-- end custom head snippets -->
</head>
<body class="layout--single">
<!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
<div class="masthead" onmouseleave="$('#childrenShow').css('display', 'none')">
<div class="masthead__inner-wrap">
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
<a class="site-title active" href="/"><img src="https://www.apache.org/img/servicecomb.png"></a>
<ul class="visible-links">
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/">Home</a>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/developers/">Projects</a>
</li>
<li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')">
<a href="/docs/users/">Documentation</a>
<ul id="childrenShow" class="def-children-show-en" onmouseleave="$('#childrenShow').css('display', 'none')">
<li><a href="/docs/getting-started/" class="">Getting started</a></li>
<li><a href="/docs/users/" class="">Docs</a></li>
<li><a href="/slides/" class="">Video</a></li>
<li><a href="/faqs/" class="">FAQ</a></li>
</ul>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a class="active" href="/developers/contributing">Community</a>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/year-archive/">Blogs</a>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/release/">Downloads</a>
</li>
</ul>
<button><div class="navicon"></div></button>
<ul class="hidden-links hidden"></ul>
<div class="nav-lang">
<a href=/cn/developers/setup-develop-environment/>中文</a>
</div>
</nav>
</div>
</div>
</div>
<div id="main" role="main">
<div class="sidebar sticky">
<div class="back-to-home"><a href="/">Home</a> > Setup Developing Environment</div>
<nav class="nav__list">
<input id="ac-toc" name="accordion-toc" type="checkbox" />
<label for="ac-toc">Toggle Menu</label>
<ul class="nav__items">
<li>
<a href="/developers/"><span class="nav__sub-title nav__sub-title-with-url">Projects</span></a>
</li>
<li>
<a href="/developers/team/"><span class="nav__sub-title nav__sub-title-with-url">Team</span></a>
</li>
<li>
<a href="/developers/contributing"><span class="nav__sub-title nav__sub-title-with-url">Contributing to Apache ServiceComb</span></a>
</li>
<li>
<a href="/developers/becomming-a-commiter"><span class="nav__sub-title nav__sub-title-with-url">Becoming A Committer of Apache ServiceComb</span></a>
</li>
<li>
<a href="/developers/setup-develop-environment/"><span class="nav__sub-title nav__sub-title-with-url">Develop Environment Setup</span></a>
</li>
<li>
<a href="/developers/submit-codes/"><span class="nav__sub-title nav__sub-title-with-url">Code Submit Guide</span></a>
</li>
<li>
<a href="/developers/use-jira/"><span class="nav__sub-title nav__sub-title-with-url">How to Use JIRA</span></a>
</li>
<li>
<a href="/developers/setup-committer-rights/"><span class="nav__sub-title nav__sub-title-with-url">Set Up Write Access for Committer</span></a>
</li>
<li>
<a href="/developers/release-guide/"><span class="nav__sub-title nav__sub-title-with-url">How to Release in Apache</span></a>
</li>
<li>
<a href="/developers/release-validation-guide/"><span class="nav__sub-title nav__sub-title-with-url">How to verify Apache Release</span></a>
</li>
<li>
<a href="/developers/sonarcloud-how-to/"><span class="nav__sub-title nav__sub-title-with-url">How to Use SonarCloud</span></a>
</li>
</ul>
</nav>
</div>
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="headline" content="Setup Developing Environment">
<meta itemprop="description" content="setup developing environment">
<meta itemprop="dateModified" content="June 24, 2017">
<div class="page__inner-wrap">
<header>
<h1 class="page__title" itemprop="headline">Setup Developing Environment
</h1>
</header>
<section class="page__content" itemprop="text">
<h2 id="install-required-tools">Install required tools</h2>
<p>Before you start, make sure you have the following tools installed:</p>
<ul>
<li><strong>Git</strong>,please refer to <a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" target="_blank">Install Git</a></li>
<li><strong>JDK 1.8</strong>,please refer to <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html" target="_blank">Install JDK</a></li>
<li><strong>Maven 3.x</strong>,please refer to <a href="https://maven.apache.org/install.html" target="_blank">Install Maven</a></li>
<li><strong>Docker</strong>,please refer to <a href="https://docs.docker.com/engine/installation/" target="_blank">Install Docker</a></li>
<li><strong>Service Center</strong>, please refer to <a href="/users/setup-environment/#运行service-center">Install Service Center</a></li>
<li><strong>IntelliJ Idea IDE</strong>(optional, you can use any IDE you like, e.g. eclipse), please refer to<a href="https://www.jetbrains.com/help/idea/installing-and-launching.html" target="_blank">Install IntelliJ</a></li>
</ul>
<h2 id="setup-git">Setup git</h2>
<ol>
<li>
<p>Get a Github account. The ServiceComb projects is hosted on Github, so you will need a Github account. You can goto <a href="https://github.com/join?source=header-home">https://github.com/join?source=header-home</a> for signup. Skip this if you already own an Github account. You can login on <a href="https://github.com/login?return_to=%2Fjoin%3Fsource%3Dheader-home">https://github.com/login?return_to=%2Fjoin%3Fsource%3Dheader-home</a> after you finished the signup.</p>
</li>
<li>
<p>Configure Git. Configure personal information and setup git for push without username/password.
Configure personal information:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config <span class="nt">--global</span> user.name &lt;your-user-name&gt;
git config <span class="nt">--global</span> user.email &lt;your-email-address&gt;
</code></pre></div> </div>
<p>Substitute &lt;your-user-name&gt;和&lt;your-email-address&gt; with your name and email. Refer<a href="https://stackoverflow.com/a/8588786" target="_blank">Git push without username and password</a>to setup pushing without username/password.</p>
</li>
<li>
<p>Get the source code. For example, to get <a href="https://github.com/apache/servicecomb-java-chassis.git">ServiceComb-Java-Chassis</a>, execute the following command:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/apache/servicecomb-java-chassis.git
</code></pre></div> </div>
</li>
</ol>
<h2 id="configure-ide">Configure IDE</h2>
<p>There are many Java IDEs around, like Eclipse, IntelliJ IDEA and STS, etc. We suggest to use IntelliJ IDEA, it’s community edition is good enough for daily usage. After you installed IntelliJ IDEA, follow <a href="https://www.jetbrains.com/help/idea/installing-and-launching.html#d325787e291">Initial Setup</a> for basic configuration. For frequently used shortcuts, <a href="https://www.jetbrains.com/help/idea/keyboard-shortcuts-you-cannot-miss.html">Cannot Miss Shortcuts</a></p>
<p>The Java Chassis and Saga project uses <a href="https://github.com/google/styleguide">Google Code Style</a>. You can find the settings file under <code class="highlighter-rouge">etc</code> directory which can be imported to IDEA. There is also a settings file for Eclipse under the same directory.</p>
<p><img src="/assets/images/intellij.code.style.3.png" alt="code style files" class="align-center" /></p>
<aside class="sidebar__right">
<nav class="toc">
<!-- <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> -->
<ul class="toc__menu" id="markdown-toc">
<li><a href="#install-required-tools" id="markdown-toc-install-required-tools">Install required tools</a></li>
<li><a href="#setup-git" id="markdown-toc-setup-git">Setup git</a></li>
<li><a href="#configure-ide" id="markdown-toc-configure-ide">Configure IDE</a> <ul>
<li><a href="#intellij-idea-configuration" id="markdown-toc-intellij-idea-configuration">IntelliJ IDEA Configuration</a></li>
</ul>
</li>
<li><a href="#next" id="markdown-toc-next">Next</a></li>
</ul>
</nav>
</aside>
<h3 id="intellij-idea-configuration">IntelliJ IDEA Configuration</h3>
<p>Configure <a href="https://www.jetbrains.com/idea/download/">IntelliJ IDEA</a></p>
<ol>
<li>
<p>Open IntelliJ Settings page
<img src="/assets/images/intellij.code.style.4.png" alt="IntelliJ Settings" class="align-center" /></p>
</li>
<li>
<p>Import the coding style settings file <code class="highlighter-rouge">etc/intellij-java-google-style.xml</code>
<img src="/assets/images/intellij.code.style.1.png" alt="import code style" class="align-center" /></p>
</li>
<li>
<p>Open a modified but uncommited file, then Choose [Code] &gt; [Show Reformat File Dialog]
<img src="/assets/images/intellij.code.style.5.png" alt="reformat file dialog" class="align-center" /></p>
</li>
<li>
<p>Choose [Only VCS changed text], then click [Run]
<img src="/assets/images/intellij.code.style.2.png" alt="reformat options" class="align-center" /></p>
</li>
</ol>
<p>Just run [Reformat code] (Ctrl+Alt+L) afterwards to format the code.</p>
<p>For more IntelliJ usages, please check <a href="https://www.jetbrains.com/help/idea/tutorials.html">IntelliJ tutorial</a></p>
<h2 id="next">Next</h2>
<ul>
<li>Read<a href="/developers/submit-codes/">Howto submit codes</a></li>
</ul>
</section>
<footer class="page__meta">
</footer>
</div>
</article>
</div>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<div align="center" style="margin: 0 0;">
<ins class="adsbygoogle"
style="display:block; border-bottom: initial;"
data-ad-client="ca-pub-7328585512091257"
data-ad-slot="3049671934"
data-ad-format="auto"></ins>
</div>
<div class="page__footer">
<footer>
<!-- start custom footer snippets -->
<!-- end custom footer snippets -->
<div class="container">
<div class="row justify-content-md-center">
<div class="col">
<ul>
<p class="header">Resources</p>
<li><a href="/docs/getting-started/">Getting started</a></li>
<li><a href="/docs/users/">User Guide</a></li>
<li><a href="/slides/">Slides</a></li>
<li><a href="/users/faq/">Common Questions</a></li>
</ul>
</div>
<div class="col">
<ul>
<p class="header">ASF</p>
<li><a href="http://www.apache.org">Foundation</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/events/current-event">Events</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</div>
<div class="col">
<ul>
<p class="header">Contribute</p>
<li><a href="http://issues.apache.org/jira/browse/SCB">Report a Doc Issue</a></li>
<li><a href="https://github.com/apache/servicecomb-website/edit/master/_developers/setup-develop-environment.md">Edit This Page on Github</a></li>
<li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
<li><a href="/security">Security</a></li>
</ul>
</div>
<div class="col">
<ul class="social-icons">
<p class="header">Community</p>
<li>
<a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">Mailing List</span></a>
</li>
<li>
<a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a>
</li>
<li>
<a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
</li>
<li>
<a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
</li>
</ul>
</div>
</div>
</div>
<div class="page__footer-bottom">
<div>&copy; 2019 Apache ServiceComb. Powered by <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
<div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>
</footer>
</div>
<script src="/assets/js/main.min.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-101622733-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>