DEV.MD https://dev.md Thu, 18 Dec 2025 20:08:17 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Maven Commands Cheat Sheet https://dev.md/2025/12/18/maven-commands-cheat-sheet/ https://dev.md/2025/12/18/maven-commands-cheat-sheet/#respond Thu, 18 Dec 2025 20:08:17 +0000 https://dev.md/?p=771 We’ll look at Maven — the most popular Java build tool and dependency manager!

Table of Contents

  1. Using Maven (MVN)
  2. Maven Architecture
  3. Maven Commands
  4. Useful Maven Command Line Options 
  5. Essential Maven Plugins
  6. Final Thoughts

Back to top

Using Maven (MVN)

The complexity of using Maven comes from the fact that it tries to do multiple things at the same time. First, it needs to describe the project, its structure, submodules, the necessary build steps and so on. Then, it needs a mechanism to provide the information about what other libraries are required for the project to build. After that, it has to actually assemble the project, run the tests, and perhaps even push it out to your artifact repository.

Creating a Project in MVN

Let’s start with the first task Maven can accomplish for you. Often the projects get created by an IDE wizard, by cloning a template from Github, or by using a generator like JHipster for the Spring Boot Angular projects. However, the template functionality is baked into Maven itself. Maven templates are called archetypes, and one can use them to kickstart a working Maven project. For example, if you execute the following command:


mvn archetype:generate -DgroupId=org.yourcompany.project -DartifactId=application


Maven will obtain a list of all available archetypes, ask you for some configuration, and generate a working project. If, for example, you select the maven-archetype-quickstart archetype, you’ll get the following project structure:

Screenshot-2017-04-12-22.46.15-640x440.jpg

You can also simplify your choice by providing a archetypeArtifactId property to pick the archetype in advance. For example, -DarchetypeArtifactId=maven-archetype-webapp will help you create a Java web app project. You can also package your MVN project into an archetype for the future use with the following command:


mvn archetype:create-from-project

Back to top

Maven Architecture

Let’s talk about the main infrastructural components involved in Maven. Maven itself is a binary on your machine. In the internet, there’s a central repository that stores and distributes all available artifacts, both the dependencies and the plugins for Maven. You can configure your own remote repositories, but in a nutshell, all of that sits in the cloud. 

Screenshot-2017-04-12-22.49.03-640x159.jpg

Back to top

Maven Commands

For performance purposes, and so you don’t download the internet every time you invoke Maven commands, Maven caches everything that it downloads in a local repository. Think of it as a cache — if something is not yet in the local repository, but is required to execute a Maven command line option, Maven checks the remote repositories.

The local repository typically resides in the ~/.m2 directory. This directory also stores the Maven configuration in the form of the settings.xml file. You can use it to configure the remote repositories, credentials to access them, and so on.

MVN Command Execution Phases

MVN command execution is separated into phases. They form the lifecycle of the build.

PhaseAction
cleanDelete target directory.
validateValidate if the project is correct.
compileCompile source code, classes stored in target/classes.
testRun tests.
packageTake the compiled code and package it in its distributable format, e.g. JAR, WAR.
verifyRun any checks to verify the MVN package is valid and meets quality criteria.
installInstall the package into the local repository.
deployCopies the final MVN package to the remote repository.

Maven Build Commands Are Declarative

The instructions of what to execute during every phase are detailed in plugins. Maven is a declarative build system, which means that you indicate what your Maven build command should accomplish, but not exactly what to execute. For example, you can configure the build to use a maven-compiler-plugin to compile the Java sources, but you don’t tell Maven when to run it.

All Maven configuration comes from the pom.xml files, which declare the model for the project. They contain the configuration of the build, declaration of the dependencies, and which plugins to use.

Plugins functionality is divided into goals. A goal is a build step. The goals are registered to be executed during the phases of the build. The goals perform the actual work during the phases that come from the lifecycle of the project.Back to top

Useful Maven Command Line Options 

Besides understanding what Maven lifecycle is or what plugins are available, you can also remember a list of Maven command line options that can simplify or speed up your work with Maven. Here is a list of a few Maven command line options that we think are relevant to almost anyone.

What Is a Maven Command Line Option?

Maven command line options are used to customize and configure how Maven builds.

CommandAction
-DskipTests=trueCompiles the tests, but skips running them.
-Dmaven.test.skip=trueSkips compiling the tests and does not run them.
-TSpecify number of parallel threads involved in the build. If your project can be built in parallel, for example the modules that do not depend on each other, this option, say -T 4 (to use 4 threads) can significantly speed up your build time. Also if you’re interested, we’ve looked into speeding up the Maven build before.
-rf –resume-from makesMaven resume the build from the specified project, if one invocation of the Maven option fails, you pretty much don’t want to repeat the work that succeeded, so you can start from where the build get interrupted.
-pl–projectsMakes Maven build only specified modules and not the whole project. When you’re working in one module of the multi-module project, you know that your changes are localized there, so you’d likely want to avoid doing empty work by building everything else.
-am –also-makeUse this syntax to build a Maven project offline. It uses the local repository for everything, and doesn’t check the internet.
-o–offline Build a Maven project offline. It uses the local repository for everything, and doesn’t check the internet.
-X–debugEnables the debug output. When things go wrong, Maven doesn’t always print the most useful error messages, enabling the debug can get you the needed hint to what went wrong.
-U–update-snapshotsForces a check for updated dependencies from the remote repositories. When you depend on a project that is still in development, you’ll need to depend on the SNAPSHOT versions. And Maven will cache them in the local repository as usual. However, the problem with the snapshots is that one version identifier can mean different artifacts, when a new version of the snapshot is pushed to the repository. To make Maven ignore the local cache, use this option.

 

Back to top

Essential Maven Plugins

These Maven plugins are good ones to keep in your toolkit:

1. Maven Help Plugin

Help plugin is used to get relative information about a project or the system. Think of it as the main pages of Maven. Here are a couple of MVN command types that you can play with.

  • mvn help:describe describes the attributes of a plugin. You can get information about a plugin, a specific goal, and so on.
  • mvn help:effective-pom displays the effective POM as an XML for the current build, with the active profiles factored in. This is really useful when something goes wrong with the build and you need to verify that what you think you configured in the pom files is what Maven thinks is configured there.

2. Maven Dependency Plugin

Dependency plugin provides the capability to manipulate and inspect the dependencies.

  • mvn dependency:analyze analyzes the dependencies of this project, prints unused, outdated dependencies, and so on. For example, if you run it on a fresh Maven project, you’ll probably see something like the following:

[WARNING] Unused declared dependencies found:
[WARNING]    junit:junit:jar:3.8.1:test
  • mvn dependency:tree will print a tree of dependencies in the project. It’s extremely useful to see the transitive dependencies (the dependencies of your dependencies), figure out the version conflicts, and see what exactly you depend upon.

3. Maven Compiler Plugin

Compiler plugin, not surprisingly, compiles your java code. It’s pretty self-explanatory, but with this one, you’ll configure again and again to comply with modern Java versions. Set the language level with the following configuration:

 org.apache.maven.plugins
 maven-compiler-plugin
 3.6.1
 
   1.8
   1.8
 

4. Maven Version Plugin

Version plugin can be used to manage the versions of artifacts in a project’s POM. If you want to compare the versions of the dependencies between two projects, make sure you don’t use any SNAPSHOT dependencies, or update the versions to use the latest releases, you can do it programmatically with the version plugin.

5. Maven Wrapper Plugin

Wrapper plugin is an easy way to ensure a user of your Maven build has everything that is necessary. It will generate a couple of shell scripts that can download a specific Maven version, so you’ll have reproducible builds. It’s also useful to bake in some configuration, like the remote repositories declaration into the maven archive. That way, the wrapper will ensure that you get the correct configuration out of the box.

6. Maven Spring Boot Plugin

There’s also a Spring Boot plugin which compiles your Spring Boot app and builds an executable fat jar. It comes with a more sensible configuration that the compiler plugin’s default. Pretty handy.

7. Maven Exec Plugin

Last but not least in our list is the Exec plugin. The exec plugin is used to execute Java commands as part of your build process. If you need to achieve something for which you don’t have a plugin yet, you can substitute it with an invocation of the exec plugin.Back to top

Final Thoughts

In this post, we looked at the some of the Maven vocabulary — repositories, dependencies, and so on — plugins that you can find useful, and some Maven command line options to make your usage with Maven easier. The best part is that all this information is neatly organized on a single A4 page cheat sheet that you can print out and have handy — whether you need to explain how Maven works to a less experienced colleague, you find yourself Googling how to configure the compiler plugin to build a Java 8 plugin, or just because it’s colorful and packs useful information. Be sure to grab your copy!

Download the One-Page Maven Cheat Sheet

If you’re working in Maven, you’ve probably scribbled some commands on a piece of paper and taped it to your wall. Now, we’re not ones to judge — we’ve been there — but we think you can do better. Our Maven Commands Cheat Sheet covers the need-to-know MVN options, and does it on a one-page PDF. Download a copy today by clicking the button below.

image-resources-maven-cheat-sheet-1.jpg

Get the Cheat Sheet

Original Sourse: https://www.jrebel.com/blog/maven-cheat-sheet

]]>
https://dev.md/2025/12/18/maven-commands-cheat-sheet/feed/ 0
Limbaje de programare https://dev.md/2017/10/01/limbaje-de-programare/ https://dev.md/2017/10/01/limbaje-de-programare/#respond Sun, 01 Oct 2017 19:18:55 +0000 http://dev.md/?p=737 O lista de limbaje de programare, furată de aici :)

  1. ABAP
  2. ABC
  3. ActionScript
  4. Ada
  5. Agilent VEE
  6. Algol
  7. Alice
  8. Angelscript
  9. Apex
  10. APL
  11. AppleScript
  12. Arc
  13. Arduino
  14. ASP
  15. AspectJ
  16. Assembly
  17. ATLAS
  18. Augeas
  19. AutoHotkey
  20. AutoIt
  21. AutoLISP
  22. Automator
  23. Avenue
  24. Awk
  25. Bash
  26. (Visual) Basic
  27. bc
  28. BCPL
  29. BETA
  30. BlitzMax
  31. Boo
  32. Bourne Shell
  33. Bro
  34. C
  35. C Shell
  36. C#
  37. C++
  38. C++/CLI
  39. C-Omega
  40. Caml
  41. Ceylon
  42. CFML
  43. cg
  44. Ch
  45. CHILL
  46. CIL
  47. CL (OS/400)
  48. Clarion
  49. Clean
  50. Clipper
  51. Clojure
  52. CLU
  53. COBOL
  54. Cobra
  55. CoffeeScript
  56. ColdFusion
  57. COMAL
  58. Common Lisp
  59. Coq
  60. cT
  61. Curl
  62. D
  63. Dart
  64. DCL
  65. DCPU-16 ASM
  66. Delphi/Object Pascal
  67. DiBOL
  68. Dylan
  69. E
  70. eC
  71. Ecl
  72. ECMAScript
  73. EGL
  74. Eiffel
  75. Elixir
  76. Emacs Lisp
  77. Erlang
  78. Etoys
  79. Euphoria
  80. EXEC
  81. F#
  82. Factor
  83. Falcon
  84. Fancy
  85. Fantom
  86. Felix
  87. Forth
  88. Fortran
  89. Fortress
  90. (Visual) FoxPro
  91. Gambas
  92. GNU Octave
  93. Go
  94. Google AppsScript
  95. Gosu
  96. Groovy
  97. Haskell
  98. haXe
  99. Heron
  100. HPL
  101. HyperTalk
  102. Icon
  103. IDL
  104. Inform
  105. Informix-4GL
  106. INTERCAL
  107. Io
  108. Ioke
  109. J
  110. J#
  111. JADE
  112. Java
  113. Java FX Script
  114. JavaScript
  115. JScript
  116. JScript.NET
  117. Julia
  118. Korn Shell
  119. Kotlin
  120. LabVIEW
  121. Ladder Logic
  122. Lasso
  123. Limbo
  124. Lingo
  125. Lisp
  126. Logo
  127. Logtalk
  128. LotusScript
  129. LPC
  130. Lua
  131. Lustre
  132. M4
  133. MAD
  134. Magic
  135. Magik
  136. Malbolge
  137. MANTIS
  138. Maple
  139. Mathematica
  140. MATLAB
  141. Max/MSP
  142. MAXScript
  143. MEL
  144. Mercury
  145. Mirah
  146. Miva
  147. ML
  148. Monkey
  149. Modula-2
  150. Modula-3
  151. MOO
  152. Moto
  153. MS-DOS Batch
  154. MUMPS
  155. NATURAL
  156. Nemerle
  157. Nimrod
  158. NQC
  159. NSIS
  160. Nu
  161. NXT-G
  162. Oberon
  163. Object Rexx
  164. Objective-C
  165. Objective-J
  166. OCaml
  167. Occam
  168. ooc
  169. Opa
  170. OpenCL
  171. OpenEdge ABL
  172. OPL
  173. Oz
  174. Paradox
  175. Parrot
  176. Pascal
  177. Perl
  178. PHP
  179. Pike
  180. PILOT
  181. PL/I
  182. PL/SQL
  183. Pliant
  184. PostScript
  185. POV-Ray
  186. PowerBasic
  187. PowerScript
  188. PowerShell
  189. Processing
  190. Prolog
  191. Puppet
  192. Pure Data
  193. Python
  194. Q
  195. R
  196. Racket
  197. REALBasic
  198. REBOL
  199. Revolution
  200. REXX
  201. RPG (OS/400)
  202. Ruby
  203. Rust
  204. S
  205. S-PLUS
  206. SAS
  207. Sather
  208. Scala
  209. Scheme
  210. Scilab
  211. Scratch
  212. sed
  213. Seed7
  214. Self
  215. Shell
  216. SIGNAL
  217. Simula
  218. Simulink
  219. Slate
  220. Smalltalk
  221. Smarty
  222. SPARK
  223. SPSS
  224. SQR
  225. Squeak
  226. Squirrel
  227. Standard ML
  228. Suneido
  229. SuperCollider
  230. TACL
  231. Tcl
  232. Tex
  233. thinBasic
  234. TOM
  235. Transact-SQL
  236. Turing
  237. TypeScript
  238. Vala/Genie
  239. VBScript
  240. Verilog
  241. VHDL
  242. VimL
  243. Visual Basic .NET
  244. WebDNA
  245. Whitespace
  246. X10
  247. xBase
  248. XBase++
  249. Xen
  250. XPL
  251. XSLT
  252. XQuery
  253. yacc
  254. Yorick
  255. Z shell
]]>
https://dev.md/2017/10/01/limbaje-de-programare/feed/ 0
Wireshark Windows remote on Linux https://dev.md/2017/05/25/wireshark-windows-remote-on-linux/ https://dev.md/2017/05/25/wireshark-windows-remote-on-linux/#respond Thu, 25 May 2017 17:38:01 +0000 http://dev.md/?p=725 Pentru a captura traficul de pe un Linux, la distanță de pe o mașină Windows e destul de simplu

plink -ssh -i c:\home\user\.ssh\id_rsa.ppk [email protected] “dumpcap -P -w – -f ‘not port 22 and port not 443′” | “C:\Program Files\Wireshark\Wireshark.exe” -k -i –

Cel mai comod e, dacă nu necesar, să ai o cheie privată în format ppk, ușor de obținut cu „puttygen.exe„

]]>
https://dev.md/2017/05/25/wireshark-windows-remote-on-linux/feed/ 0
Inițializarea unui repozitoriu Git https://dev.md/2017/05/23/initializarea-unui-repozitoriu-git/ https://dev.md/2017/05/23/initializarea-unui-repozitoriu-git/#respond Tue, 23 May 2017 20:26:54 +0000 http://dev.md/?p=720 Command line instructions
Git global setup

git config --global user.name "User Name"
git config --global user.email "[email protected]"

Create a new repository

git clone http://[email protected]/uname/coolproject.git
cd coolproject
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder

cd existing_folder
git init
git remote add origin http://[email protected]/uname/coolproject.git
git add .
git commit
git push -u origin master

Existing Git repository

cd existing_repo
git remote add origin http://[email protected]/uname/coolproject.git
git push -u origin --all
git push -u origin --tags

Store Git credentials

git config credential.helper store

]]>
https://dev.md/2017/05/23/initializarea-unui-repozitoriu-git/feed/ 0
Modificarea a configurației IIS prin PowerShell https://dev.md/2017/03/24/modificarea-a-configuratiei-iis-prin-powershell/ https://dev.md/2017/03/24/modificarea-a-configuratiei-iis-prin-powershell/#respond Fri, 24 Mar 2017 15:44:17 +0000 http://dev.md/?p=715 Recent am dat de o situație când la deployment se aplica transformarea la web.config cu ce era în release. Unele chestii, însă, era necesar de a le întoarce înapoi pe serverul de Development. Cerința era de a nu avea configuri per fiecare environment, așa că, am decis că după deploy de adăugat un task în Octopus care rula un PowerShell script similar la acesta:

Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Origin';value='*'}
Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Headers';value='Content-Type'}
Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Methods';value='GET, OPTIONS'}

]]>
https://dev.md/2017/03/24/modificarea-a-configuratiei-iis-prin-powershell/feed/ 0
Upgrade la browser-ul din Windows XP https://dev.md/2015/08/12/upgrade-la-browser-ul-din-windows-xp/ https://dev.md/2015/08/12/upgrade-la-browser-ul-din-windows-xp/#respond Wed, 12 Aug 2015 08:22:24 +0000 http://dev.md/?p=677 windows_xp-100154667-large[1]Windows XP vine cu Internet Explorer 6.x, o versiune suficient de veche pentru a fi refuzată de o parte importantă a site-urilor (chiar și de Google). Vrei să instalezi un alt browser, te trezești că pagina nu se încarcă, pe motiv de incompatibilitate.

WinXPAșa că, ori faci update la Internet Exlorer, pentru ca, ulterior să poți instala Google Chrome sau Firefox, sau, copiezi executabilul de pe un site mai puțin “pretențios”, cum ar fi de aici.

]]>
https://dev.md/2015/08/12/upgrade-la-browser-ul-din-windows-xp/feed/ 0
Monitorizare UPS în FreeBSD https://dev.md/2015/07/21/monitorizare-ups-in-freebsd/ Tue, 21 Jul 2015 11:04:06 +0000 http://dev.md/?p=657 UPS-Powercom-BNT-1000AP

Folosesc acest model de UPS (powercom BNT-1000AP) de vreo câțiva ani și tot nu-mi ajungea timp să mă lămuresc cum să-l fac să meargă în FreeBSD cu vreun soft de monitorizare UPS. Azi am reușit să dedic ceva timp acestui subiect și m-am oprit la NUT. Mai jos, va urma pas cu pas descrierea cum am reușit să-l fac să meargă și ceva detalii cum de configurat Cacti pentru a genera grafici. Pe viitor, cred că voi adăuga și ceva ce ține de monitorizarea cu ajutorul lui Nagios.

UPS-Powercom-BNT-1000AP_description

]]>
Secundă intercalată https://dev.md/2015/01/09/secunda-intercalata/ Fri, 09 Jan 2015 01:29:12 +0000 http://dev.md/?p=643 23:59:60 – e ceva real. Ocazional, anul are o secundă în plus. Această practică a fost adoptată pentru a ține pasul cu timpul solar din cauza că Terra încetinește câte puțin, adică se mărește timpul care e necesar pentru o rotație completă în jurul Soarelui.

Teoretic e simplu – plus o secundă. Însă când ajungem la sistemele informaționale, apare problema similară Y2K. Ca și în cazul Y2K, utilizatorii simpli nu vor fi afectați. Problema apare pe sisteme unde se petrec sute și mii de operațiuni pe secundă și toate acestea trebuie procesate, stocate, monitorizate.

Partea proastă este că secunda nu este adăugată la un interval prestabilit de timp ca în cazul anumul bisect, ci este efectuată de către Serviciul Internațional pentru Rotația Terestră și Sisteme de Referință (IERS) când este considerat de cuviință. Ca urmare, producătorii de software nu au cum să anticipeze și să introducă în cod ajustările necesare pentru a evita eventualele probleme. Ajustarea se face la nivel de OS, deci e important de a aplica patch-urile de rigoare. Oricum, rămâne pe seama softul capabilitatea de a procesa și valida ora 23:59:60.

Google a soluționat problema prin a împărți secunda în milesecunde.

Nu mulți însă își pot permite o abordare serioasă a acestei probleme, așa că majoritatea o ignoră, iar foarte puțini sun cei ce pătimesc pe urma ei.

Articol inspirat din Wikipedia

]]>
Upgrade la portupgrade în FreeBSD https://dev.md/2014/03/10/upgrade-la-portupgrade-in-freebsd/ Mon, 10 Mar 2014 16:59:19 +0000 http://dev.md/?p=596 Periodic, e necesar de făcut upgrade la softul ce rulează pe server.
Ca și orice sistem, FreeBSD are diverse unelte ce ușurează viața admin-ului. Spre exemplu eu, folosesc portupgrade, unealtă comodă pentru a face upgrade la softul instalat și dependențele lui. Scopul acestui articol este de a scoate la suprafață o “problemă” de care m-am împiedicat chiar azi făcând ugrade la portupgrade folosind portupgrade :)

Să nu întind pe câteva pagini, iată detaliile – portupgrade este un script scris în Ruby, respectiv Ruby este o dependență pentru el. Astăzi am re-împrospătat colecția de port-uri

# portsnap fetch update

după care, am verificat dacă portupgrade e up to date

# pkg_version -vs portupg
portupgrade-2.4.9.5,2               <   needs updating (port has 2.4.12,2)

Am decis să-l re-înoiesc, inclusiv și softul de care depinde

# portupgrade -R portupgrade

La un moment dat, m-am trezit cu niște erori

...
gzip -cn pkgtools.conf.5 > pkgtools.conf.5.gz
===> misc (all)
===> misc/bash (all)
Warning: Object directory not changed from original /usr/ports/ports-mgmt/portup
===> misc/tcsh (all)
Warning: Object directory not changed from original /usr/ports/ports-mgmt/portup
===> misc/zsh (all)
Warning: Object directory not changed from original /usr/ports/ports-mgmt/portup

Puțin am căzut pe gânduri, căci mai făceam și alte chestii în paralel, apoi mi-am dat seama, Ruby s-a pus cu versiunea 1.9 pe când portupgrade curent folosea versiunea 1.8

Soluția este de a șterge pachetele și de a le instala din nou (în cazul meu, am re-instalat și bash-4.2.45 cu versiune mai nouă)

# pkg_info -Rr portupgrade-2.4.9.5,2
Information for portupgrade-2.4.9.5,2:

Depends on:
Dependency: ruby-1.9.3.484_1,1
Dependency: db42-4.2.52_5
Dependency: ruby18-bdb-0.6.6

# pkg_delete portupgrade-2.4.12,2 ruby18-bdb-0.6.6
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean

Până la urmă, m-am trezit cu mult mai multe probleme, greu de descris în acest articol.

Și la final, o mică concluzie – e bine de făcut upgrade la soft periodic, căci cu timpul apar tot mai multe versiuni noi, dependențe și incompatibilități și te trezești că ai de rezolvat un puzzle complicat și pierzi o grămadă de timp. Chiar, uneori îți vine să ștergi totul și să reinstalezi de l capăt :)

]]>
NTP Amplification DDoS Attack https://dev.md/2014/03/09/ntp-amplification-ddos-attack/ Sun, 09 Mar 2014 11:26:55 +0000 http://dev.md/?p=589 dev.md_ntpd_attack A ajuns “rândul” și serverului DEV.MD să fie ținta unui atac DDoS. De fapt, nu cred că era vizat anume serverul DEV.MD, mai degrabă a fost o punte pentru a ataca altă destinație. Nu am date, căci am fost nevoit să opresc serviciul NTP fără a avea posibilitatea să analizez ce se întâmplă.

Poate voi avea inspirația și timp, și voi întinde plasa, să văd care-i cozul :)

Update: 78.108.80.148 este IP-ul sursă

role: MAJORDOMO.RU NOC
address: Torfyanaya doroga 7 lit F, of 1323 197342 Saint-Petersburg Russia
phone: +7 812 3353545
phone: +7 495 7272278
fax-no: +7 812 3353545
fax-no: +7 495 7272278
abuse-mailbox: [email protected]

]]>